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 ...
随机推荐
- Problem E: 动物爱好者
Problem E: 动物爱好者 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 882 Solved: 699[Submit][Status][Web ...
- javascript 中遍历数组的简单方法
在Javascript中有自带方便遍历数组的方法(此方法非彼方法不要误会哦): 1 .利用for( index in array ){}; 2.利用 array.forEach( function(e ...
- mac下selenium+python环境搭建
selenium2+python的环境搭建主要需要python和selenium 1.python mac下自带了python,可以查看版本.当然可以选择安装其它版本的python. 2.seleni ...
- c#控件攻略宝典之ListBox控件
ListBox控件的使用: 1)控件属性 Items SelectedItems SelectioModes 2)数据绑定 DataSoure DisplayMember ValueMenber 3) ...
- .net core2 发送电子邮件封装
在.net core2 如何发送电子邮件呢,我们选择使用自带的System.Net.Mail,下面我们将如何使用封装成一个函数,供大家参考. /// <summary> /// 发送电子邮 ...
- java SE 基础概念梳理(一)
(一)First 摘要:Java概述.Java开发环境搭建.程序开发流程 Java概述 Java的应用 开发QQ.迅雷程序(桌面应用软件)开发淘宝.京东(互联网应用软件) Java的擅长 互联网: ...
- react native一键分享功能实现&原理和注意点(支持微信、qq、新浪微博等)
目前手机使用的一键分享SDK比较主流的有两个:一个是ShareSDK,另一个是友盟分享. 又因为友盟功能比较多且比较全,比如说友盟统计.友盟推送等,所以本文重点介绍的是友盟分享功能在rn上的应用以及要 ...
- 企业级应用TOMCAT
第1章 Tomcat 1.1 Tomcat简介 Tomcat是一个免开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不多的场合下被普遍使用,是开发调试JSP程序的首选,另 ...
- javafx 聊天室WeChat
[toc] 功能和特性 基于socket实现的c/s架构的的通信 服务器和客户心跳连接 gson实现的消息通信机制 注册及登录 支持私聊和群聊. 动态更新用户列表以及用户消息提示 支持emoji表情, ...
- robotframework自动化系统:操作mysql数据库
随着项目自动化深入和不断完善,大部分功能都已经能完成了自动化的操作:但是在设备添加的时候,遇到了难题.添加设备的时候mac必须是服务器设备管理中已经存在的mac地址,且是没有关联或绑定用户的设备信息. ...