昨晚把第五章未譯完的幾句話解決了,不過第六章沒怎麼譯,明後天又是週末,如果週一前第六章翻譯完的話,週一再發第六章。
本文譯自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,請點擊文末的“頂”,我在精神上會倍受鼓勵的,謝謝。翻譯如有錯訛,敬請指正。
從這裏的 sourceSet 構建出來的是一個測試的apk,它可以部署到設備上,使用 Android 的測試框架去測試應用程序。它可以包含單元測試、 instrumentation 測試和後來的 uiautomator 測試。這個
SourceSet 不應該包含 AndroidManifest.xml ,因爲它是會自動生成的。
下面是可以用來配置測試應用程序的幾個值:
- testPackageName
- testInstrumentationRunner
-
testHandleProfiling
-
testFunctionalTest
android {defaultConfig {testPackageName "com.test.foo"testInstrumentationRunner "android.test.InstrumentationTestRunner"testHandleProfiling truetestFunctionalTest true}}
此外,sourceSet可以配置自己的依賴。
默認情況下,應用程序和它自己的依賴都會被添加到測試應用程序的classpath中,但是也可以通過以下來擴展
dependencies {androidTestCompile 'com.google.guava:guava:11.0.2'}
目前只有一種Build Type會進行測試。默認情況下是debugBuild Type,但它可以被重新配置:
android {...testBuildType "staging"}
運行測試
- 確保應用程序和測試應用程序都被構建 (依賴於 assembleDebug 和 assembleTest)
- 安裝這兩個應用程序
- 運行測試
- 卸載這兩個應用程序。
所有測試結果都會保存爲 XML 文件,路徑爲
build/androidTest-results
它可以通過以下方式來配置
配置
android {...testOptions {resultsDir = "$project.buildDir/foo/results"}}
唯一的區別是整個庫 (和它的依賴項) 會自動作爲Library依賴添加到測試應用程序中。結果就是測試 APK 不只包含其自己的代碼,還包括測試庫以及測試庫的所有依賴項。
這個Library的manifest 會合併到測試應用程序的manifest中(如引用此Library的任何項目)。
AndroidTest任務改爲僅安裝 (以及卸載)測試 APK (因爲沒有其他的 APK 要安裝)
其他的都是相同的。
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'}
}