Android官方技术文档翻译——Gradle插件用户指南(6) - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

Android官方技术文档翻译——Gradle插件用户指南(6)

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:42


没想到翻译这篇《Gradle 插件用户指南》拖了差不多一个月,还跨年了。不过还好,在2号时终于一口气把剩下的给翻译完了(其实那天剩下的也就不到一章)。
今天先发一下第六章,明天再发第七章。
本文译自Android官方技巧文档《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide。
翻译不易,转载请注明CSDN博客上的出处:
http://blog.csdn.net/maosidiaoxian/article/details/42386877
前三章见《Android官方技巧文档翻译——Gradle 插件用户指南(1-3)》。
第四┞仿见《Android官方技巧文档翻译——Gradle 插件用户指南(4)》。
第五章见《Android官方技巧文档翻译——Gradle 插件用户指南(5)》。
翻译工作耗时操心,如不雅你认为本文翻译得还OK,请点击文末的“顶”,我在精力上会倍受鼓励的,感谢。翻译如有错讹,敬请斧正。

测试


构建一个测试应用法度榜样已经集成到应用法度榜样项目中了。所以已经没有须要再去创建一个零丁的测试项目。

基本常识和设备


正如前面所说起,在main sourceSet旁边的是androidTest sourceSet,默认情况下,它位于src /androidTest/
大年夜这里的 sourceSet 构建出来的是一个测试的apk,它可以安排到设备上,应用 Android 的测试框架去测试应用法度榜样。它可以包含单位测试、 instrumentation 测试和后来的 uiautomator 测试。这个
SourceSet 不该该包含 AndroidManifest.xml ,因为它是会主动生成的。
下面是可以用来设备测试应用法度榜样的几个值:
  • testPackageName
  • testInstrumentationRunner

  • testHandleProfiling

  • testFunctionalTest
正如前面所看到的,它们在defaultConfig对象中设备:

android {
    defaultConfig {
        testPackageName "com.test.foo"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
        testHandleProfiling true
        testFunctionalTest true
    }
}

在测试法度榜样里的manifest里的instrumentation节点中,targetPackage属性的值会主动设为被测试的应用法度榜样的包名称,即使它经由过程defaultConfig或Build Type对象自定义过。这是manifest 主动生成的原因之一。
此外,sourceSet可以设备本身的依附。
默认情况下,应用法度榜样和它本身的依附都邑被添加到测试应用法度榜样的classpath中,然则也可以经由过程以下来扩大

dependencies {
    androidTestCompile 'com.google.guava:guava:11.0.2'
}

这个测试法度榜样是由assembleTest义务构建的。它不是main里的assemble义务的依附项,当设置测试运行时它不会被主动调用。
今朝只有一种Build Type会进行测试。默认情况下是debugBuild Type,但它可以被从新设备: 

android {
    ...
    testBuildType "staging"
}

运行测试


正如前面提到的,经由过程锚义务 connectedCheck运行的检查,须要一个已连接的设备。
它依附于义务androidTest,是以将运行 androidTest。该义务履行以下操作:
  • 确保应用法度榜样和测试应用法度榜样都被构建 (依附于 assembleDebug 和 assembleTest)
  • 安装这两个应用法度榜样
  • 运行测试
  • 卸载这两个应用法度榜样。
如不雅连接了多个设备,所有的测试都邑并交运行在所有连接的设备上。如不雅任何一个设备的个一一项测试掉败,那么全部构定都将掉败。
所有测试结不雅都邑保存为 XML 文件,路径为 
build/androidTest-results

(这类似于 jUnit 按期运行的结不雅保存在 build/text-result 下面)
它可以经由过程以下方法来设备 
设备

android {
    ...
    testOptions {
        resultsDir = "$project.buildDir/foo/results"
    }
}

Android.testOptions.resultsDir的值精晓过Project.file(String) 获得

测试 Android Libraries


测试 Android Library项目与测试应用法度榜样项目标方法完全一样。
独一的差别是全部库 (和它的依附项) 会主动作为Library依附添加到测试应用法度榜样中。结不雅就是测试 APK 不只包含其本身的代码,还包含测试库以及测试库的所有依附项。
这个Library的manifest 会归并到测试应用法度榜样的manifest中(如引用此Library的任何项目)。
AndroidTest义务改为仅安装 (以及卸载)测试 APK (因为没有其他的 APK 要安装)
其他的都是雷同的。

测试申报


当运行单位测试时,Gradle 会输出 HTML 申报,以便利查看结不雅。
Android 插件在此基本上扩大了 HTML 申报,它聚合了所有连接的设备的测试结不雅。

单个项目标申报


这个测试申报的项目会在运行测试时主动生成。它的默认地位是
build/reports/androidTests

它类似于 jUnit 申报的地位build/reports/tests,或其他平日位于build/reports/<plugin>/的申报。
这个地位可以经由过程以下方法自定义 

android {
    ...
    testOptions {
        reportDir = "$project.buildDir/foo/report"
    }
}

该申报将聚合在不合的设备运行的测试。

多项目申报


在一个设置了一个或多个application和 library 项目标多项目中,当同时运行所有的测试,为所有测试生成单个申报可能是异常有效的。
要做到这一点,须要应用同一个文件中的另一个插件。这个插件可以如下设备: 

buildscript {
    repositories {
        mavenCentral()
    }


    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.6'
    }
}
apply plugin: 'android-reporting'

这个插件应当在根项目中设备应用,即在 settings.gradle同级目次的build.gradle中。
然后在根文件夹中,下面的敕令就可以运行所有的测试并聚合测试申报: 
gradle deviceCheck mergeAndroidReports --continue

注: --continue选项确保所有子项目标测试都邑被运行,即使个中的一个子项目标测试掉败了。如不雅不加上这个选项,第一个掉败的测试将会中断所有测试的运行,这可能导致有些项目还没有履行它们的测试。

Lint 支撑


大年夜 0.7.0 版本起,您可认为一个指定的variant或所有的variants 运行lint,在这种情况下,它会生成一个申报,描述每一个给定的问题都存在于哪些指定的variants 。
您可以经由过程添加以下的一个 lintOptions 节点对lint进行设备。平日,您只须要指定个中的几个 ;以下列出了所有可用的选项。
android {
    lintOptions {

        // 设置为 true时lint将不申报分析的进度
        quiet true
        // 如不雅为 true,则当lint发明缺点时停止 gradle构建
        abortOnError false
        // 如不雅为 true,则只申报缺点
        ignoreWarnings true
        // 如不雅为 true,则当出缺点时会显示文件的全路径或绝对路径 (默认情况下为true)
        //absolutePaths true
        // 如不雅为 true,则检查所有的问题,包含默认不检盘考题
        checkAllWarnings true
        // 如不雅为 true,则将所有警告视为缺点
        warningsAsErrors true
        // 不检查给定的问题id
        disable 'TypographyFractions','TypographyQuotes'
        // 检查给定的问题 id
        enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
        // * 仅 * 检查给定的问题 id
        check 'NewApi', 'InlinedApi'
        // 如不雅为true,则在缺点申报的输出中不包含源代码行
        noLines true
        // 如不雅为 true,则对一个缺点的问题显示它地点的所有处所,而不会截短列表,等等。
        showAll true
        // 重置 lint 设备(应用默认的严重性等设置)。
        lintConfig file("default-lint.xml")
        // 如不雅为 true,生成一个问题的纯文本申报(默认为false)
        textReport true
        // 设备写入输出结不雅的地位;它可所以一个文件或 “stdout”(标准输出)
        textOutput 'stdout'
        // 如不雅为真,会生成一个XML申报,以给Jenkins之类的应用
        xmlReport false
        // 用于写入申报的文件(如不雅不指定,默认为lint-results.xml)
        xmlOutput file("lint-report.xml")
        // 如不雅为真,会生成一个HTML申报(包含问题的解释,存在此问题的源码,等等)
        htmlReport true
        // 写入申报的路径,它是可选的(默认为构建目次下的 lint-results.html )
        htmlOutput file("lint-report.html")
   // 设置为 true, 将使所有release 构定都以issus的严重性级别为fatal(severity=false)的设置来运行lint
   // 并且,如不雅发清楚明了致命(fatal)的问题,将会中断构建(由膳绫擎提到的 abortOnError 控制)
   checkReleaseBuilds true

        // 设置给定问题的严重级别(severity)为fatal (这意味着他们将会
        // 在release构建的时代检查 (即使 lint 要检查的问题没有包含在代码中)
        fatal 'NewApi', 'InlineApi'
        // 设置给定问题的严重级别为error
        error 'Wakelock', 'TextViewEdits'
        // 设置给定问题的严重级别为warning
        warning 'ResourceAsColor'
        // 设置给定问题的严重级别(severity)为ignore (和不检查这个问题一样)
        ignore 'TypographyQuotes'
    }
}

相关案例查看更多