昨晚把第五章未譯完的幾句話攻克了。只是第六章沒怎麼譯,明後天又是週末,假設週一前第六章翻譯完的話,週一再發第六章。html
本文譯自Android官方技術文檔《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide。android
翻譯不易。轉載請註明CSDN博客上的出處:app
http://blog.csdn.net/maosidiaoxian/article/details/42023609
框架
前三章見《Android官方技術文檔翻譯——Gradle 插件用戶指南(1-3)》。maven
第四章見《Android官方技術文檔翻譯——Gradle 插件用戶指南(4)》。ide
翻譯工做耗時費神。假設你認爲本文翻譯得還OK,請點擊文末的「頂」,我在精神上會倍受鼓舞的,謝謝。post
翻譯若有錯訛。敬請指正。gradle
如下是可以用來配置測試應用程序的幾個值:
ui
testHandleProfilinggoogle
testFunctionalTest
android {defaultConfig {testPackageName "com.test.foo"testInstrumentationRunner "android.test.InstrumentationTestRunner"testHandleProfiling truetestFunctionalTest true}}
這是manifest 本身主動生成的緣由之中的一個。
此外,sourceSet可以配置本身的依賴。
默認狀況下,應用程序和它本身的依賴都會被加入到測試應用程序的classpath中,但是也可以經過下面來擴展
dependencies {androidTest Compile 'com.google.guava:guava:11.0.2'}
它不是main裏的assemble任務的依賴項,當設置測試執行時它不會被本身主動調用。
眼下僅僅有一種Build Type會進行測試。
默認狀況下是debugBuild Type,但它可以被又一次配置:
android {...testBuildType "staging"}
所有測試結果都會保存爲 XML 文件,路徑爲
build/androidTest-results
android {...
testOptions {resultsDir = "$project.buildDir/foo/results"}}
結果就是測試 APK 不只僅包括其本身的代碼。還包括測試庫以及測試庫的所有依賴項。
這個Library的manifest 會合併到測試應用程序的manifest中(如引用此Library的不論什麼項目)。
AndroidTest任務改成僅安裝 (以及卸載)測試 APK (因爲沒有其它的 APK 要安裝)
其它的都是一樣的。
build/reports/ androidTest s
這個位置可以經過下面方式本身定義
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
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'}
}