Android官方技术文档翻译——Gradle 插件用户指南(5)
昨晚把第五章未译完的几句话攻克了。只是第六章没怎么译,明后天又是周末,假设周一前第六章翻译完的话,周一再发第六章。
本文译自Android官方技术文档《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide。
翻译不易。转载请注明CSDN博客上的出处:
http://blog.csdn.net/maosidiaoxian/article/details/42023609
前三章见《Android官方技术文档翻译——Gradle 插件用户指南(1-3)》。
第四章见《Android官方技术文档翻译——Gradle 插件用户指南(4)》。
翻译工作耗时费神。假设你认为本文翻译得还OK,请点击文末的“顶”,我在精神上会倍受鼓舞的,谢谢。
翻译如有错讹。敬请指正。
測试
基础知识和配置
/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 truetestFunctionalTest
true}}
Type对象自己定义过。
这是manifest 自己主动生成的原因之中的一个。
此外,sourceSet能够配置自己的依赖。
默认情况下,应用程序和它自己的依赖都会被加入到測试应用程序的classpath中,可是也能够通过下面来扩展
dependencies {androidTestCompile
'com.google.guava:guava:11.0.2'}
它不是main里的assemble任务的依赖项,当设置測试执行时它不会被自己主动调用。
眼下仅仅有一种Build Type会进行測试。
默认情况下是debugBuild Type,但它能够被又一次配置:
android {...testBuildType "staging"}
执行測试
- 确保应用程序和測试应用程序都被构建 (依赖于 assembleDebug 和 assembleTest)
- 安装这两个应用程序
- 执行測试
- 卸载这两个应用程序。
假设连接了多个设备。全部的測试都会并行执行在全部连接的设备上。假设不论什么一个设备的当中一项測试失败。那么整个构建都将失败。
全部測试结果都会保存为 XML 文件,路径为
build/androidTest-results
它能够通过下面方式来配置
配置
android {...
testOptions {resultsDir = "$project.buildDir/foo/results"}}
測试 Android Libraries
唯一的差别是整个库 (和它的依赖项) 会自己主动作为Library依赖加入到測试应用程序中。
结果就是測试 APK 不仅仅包括其自己的代码。还包括測试库以及測试库的全部依赖项。
这个Library的manifest 会合并到測试应用程序的manifest中(如引用此Library的不论什么项目)。
AndroidTest任务改为仅安装 (以及卸载)測试 APK (由于没有其它的 APK 要安装)
其它的都是同样的。
測试报告
Android 插件在此基础上扩展了 HTML 报告。它聚合了全部连接的设备的測试结果。
单个项目的报告
build/reports/androidTests
它类似于 jUnit 报告的位置build/reports/tests,或其它通常位于build/reports/<plugin>/的报告。
这个位置能够通过下面方式自己定义
android {...
testOptions {reportDir = "$project.buildDir/foo/report"}}
多项目报告
要做到这一点,须要使用同一个文件里的还有一个插件。
这个插件能够例如以下配置:
buildscript {repositories {mavenCentral()}
dependencies {classpath 'com.android.tools.build:gradle:0.5.6'}}
apply plugin: 'android-reporting'
然后在根目录中,以下的命令就能够执行全部的測试并聚合測试报告:
gradle deviceCheck mergeAndroidReports --continue
注: --continue选项确保全部子项目的測试都会被执行,即使当中的一个子项目的測试失败了。假设不加上这个选项,第一个失败的測试将会中断全部測试的执行,这可能导致有些项目还没有执行它们的測试。
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// 不检查给定的问题iddisable 'TypographyFractions','TypographyQuotes'// 检查给定的问题 idenable 'RtlHardcoded','RtlCompat', 'RtlEnabled'// * 仅 * 检查给定的问题 idcheck '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'// 设置给定问题的严重级别为errorerror 'Wakelock', 'TextViewEdits'// 设置给定问题的严重级别为warningwarning 'ResourceAsColor'// 设置给定问题的严重级别(severity)为ignore (和不检查这个问题一样)ignore 'TypographyQuotes'}
}
Android官方技术文档翻译——Gradle 插件用户指南(5)的更多相关文章
- Android官方技术文档翻译——Gradle 插件用户指南(4)
最近赶项目,白天基本没时间,只有晚上在家的时候才能看一看.昨天晚上只翻译完了第四章,今天就只发第四章吧. 本文译自Android官方技术文档<Gradle Plugin User Guide&g ...
- Android官方技术文档翻译——Gradle 插件用户指南(7)
本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/tech-docs/new-build- ...
- Android官方技术文档翻译——Gradle 插件用户指南(6)
没想到翻译这篇<Gradle 插件用户指南>拖了差不多一个月,还跨年了.不过还好,在2号时终于一口气把剩下的给翻译完了(其实那天剩下的也就不到一章). 今天先发一下第六章,明天再发第七章. ...
- Android官方技术文档翻译——Gradle 插件用户指南(1-3)
不知道是什么网络问题,上午一直发不了博客,其它页面基本正常,就是在写博客这里,每次打开都是响应超时.刚才用了VPN,顺便试了一下,竟然能够编辑.想是CDN之类的问题吧. 这次翻译的是Gradle 插件 ...
- Android官方技术文档翻译——新构建系统概述
本文译自Android官方技术文档<New Build System>,原文地址:http://tools.android.com/tech-docs/new-build-system. ...
- Android官方技术文档翻译——迁移 Gradle 项目到1.0.0 版本
本文译自Android官方技术文档<Migrating Gradle Projects to version 1.0.0>,原文地址:http://tools.android.com/te ...
- Android官方技术文档翻译——IntelliJ 项目迁移
本文译自Android官方技术文档<Migrating from IntelliJ Projects>,原文地址:http://tools.android.com/tech-docs/ne ...
- Android官方技术文档翻译——Eclilpse项目迁移
本文译自Android官方技术文档<Migrating From Eclipse Projects>,原文地址:http://tools.android.com/tech-docs/new ...
- Android官方技术文档翻译——清单合并
本文译自Android官方技术文档<Manifest Merger>,原文地址:http://tools.android.com/tech-docs/new-build-system/us ...
随机推荐
- C# linq左连接与分组
1.左连接使用DefaultIfEmpty(): 2.分组时候判断newper.FirstOrDefault() == null ? null: newper.ToList()这个经常出错误,如果不判 ...
- 引入CSS的方式有哪些?link和@import的有何区别应如何选择【转载】
看到淘宝网页中这样写使用的是import,而很多网站都是使用link,当然还有一些页面比较简单,流量很大的网站,是直接将CSS写在html代码中的?他们有什么区别?CSS用import还是link好? ...
- Page visibility 页面可见性
一直以来,判断页面是不是当前可见标签,浏览器有没有缩小都是比较麻烦的. 通过页面可见性API可以获得相关信息document.hidden 判断页面当前是不是可见的document.visibi ...
- 「Vue」起步 - vue-router路由与页面间导航
vue-router 我们知道路由定义了一系列访问的地址规则,路由引擎根据这些规则匹配找到对应的处理页面,然后将请求转发给页进行处理.可以说所有的后端开发都是这样做的,而前端路由是不存在"请 ...
- jQuery DataTables 获取选中行数据
如题 想获取操作 DataTables 获取选中行数据 案1.主要是利用 js getElementsByTagName 函数 然后对获取到的tr 进行操作 如下 function getChec ...
- 前端使用d3.js调用地图api 进行数据可视化
前段时间自己研究了demo就是把某个区域的某个位置通过经纬度在地图上可视化.其实就是使用了第三方插件,比现在比较火的可视化插件d3.js echart.js.大致思路就是,把要用到的位置的geojso ...
- 一篇不错的Gibbs Sampling解释文章,通俗易懂
http://cos.name/2013/01/lda-math-mcmc-and-gibbs-sampling/ 直接原文的链接了.原文写的不错,是中文博客中说的比较明白的了. 但为了保留文章,随 ...
- markdown简述
前端开发的工具 编辑器: 1. 轻量级的,依靠插件:sublime:atom(github):vs code(miscrosaft) 2. 集成的:DW:webstorm:hbuild ...
- [线性筛]P1865 A % B Problem
题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对 ...
- 九、VueJs 填坑日记之在项目中使用jQuery
很多人学习 js 都是从 jQuery 开始的,我也不例外.有时候进行一些操作的时候,还是感觉 jQuery 比较好用,那么,我们如何在项目中使用 jQuery 呢?这篇博文带你实践. 引用 jQue ...