知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
Android官方技術(shù)文檔翻譯——Gradle插件用戶指南(6)
發(fā)表時(shí)間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):63
沒想到翻譯這篇《Gradle 插件用戶指南》拖了差不多一個(gè)月,還跨年了。不過還好,在2號(hào)時(shí)終于一口氣把剩下的給翻譯完了(其實(shí)那天剩下的也就不到一章)。
今天先發(fā)一下第六章,明天再發(fā)第七章。
本文譯自Android官方技巧文檔《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide。
翻譯不易,轉(zhuǎn)載請(qǐng)注明CSDN博客上的出處:
http://blog.csdn.net/maosidiaoxian/article/details/42386877
前三章見《Android官方技巧文檔翻譯——Gradle 插件用戶指南(1-3)》。
第四┞仿見《Android官方技巧文檔翻譯——Gradle 插件用戶指南(4)》。
第五章見《Android官方技巧文檔翻譯——Gradle 插件用戶指南(5)》。
翻譯工作耗時(shí)操心,如不雅你認(rèn)為本文翻譯得還OK,請(qǐng)點(diǎn)擊文末的“頂”,我在精力上會(huì)倍受鼓勵(lì)的,感謝。翻譯如有錯(cuò)訛,敬請(qǐng)斧正。
測(cè)試
構(gòu)建一個(gè)測(cè)試應(yīng)用法度榜樣已經(jīng)集成到應(yīng)用法度榜樣項(xiàng)目中了。所以已經(jīng)沒有須要再去創(chuàng)建一個(gè)零丁的測(cè)試項(xiàng)目。
基本常識(shí)和設(shè)備
正如前面所說起,在main sourceSet旁邊的是androidTest sourceSet,默認(rèn)情況下,它位于src /androidTest/
大年夜這里的 sourceSet 構(gòu)建出來的是一個(gè)測(cè)試的apk,它可以安排到設(shè)備上,應(yīng)用 Android 的測(cè)試框架去測(cè)試應(yīng)用法度榜樣。它可以包含單位測(cè)試、 instrumentation 測(cè)試和后來的 uiautomator 測(cè)試。這個(gè)
SourceSet 不該該包含 AndroidManifest.xml ,因?yàn)樗菚?huì)主動(dòng)生成的。
下面是可以用來設(shè)備測(cè)試應(yīng)用法度榜樣的幾個(gè)值:
- testPackageName
- testInstrumentationRunner
-
testHandleProfiling
-
testFunctionalTest
android {
defaultConfig {
testPackageName "com.test.foo"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
testHandleProfiling true
testFunctionalTest true
}
}
在測(cè)試法度榜樣里的manifest里的instrumentation節(jié)點(diǎn)中,targetPackage屬性的值會(huì)主動(dòng)設(shè)為被測(cè)試的應(yīng)用法度榜樣的包名稱,即使它經(jīng)由過程defaultConfig或Build Type對(duì)象自定義過。這是manifest 主動(dòng)生成的原因之一。
此外,sourceSet可以設(shè)備本身的依附。
默認(rèn)情況下,應(yīng)用法度榜樣和它本身的依附都邑被添加到測(cè)試應(yīng)用法度榜樣的classpath中,然則也可以經(jīng)由過程以下來擴(kuò)大
dependencies {
androidTestCompile 'com.google.guava:guava:11.0.2'
}
這個(gè)測(cè)試法度榜樣是由assembleTest義務(wù)構(gòu)建的。它不是main里的assemble義務(wù)的依附項(xiàng),當(dāng)設(shè)置測(cè)試運(yùn)行時(shí)它不會(huì)被主動(dòng)調(diào)用。
今朝只有一種Build Type會(huì)進(jìn)行測(cè)試。默認(rèn)情況下是debugBuild Type,但它可以被從新設(shè)備:
android {
...
testBuildType "staging"
}
運(yùn)行測(cè)試
正如前面提到的,經(jīng)由過程錨義務(wù) connectedCheck運(yùn)行的檢查,須要一個(gè)已連接的設(shè)備。
它依附于義務(wù)androidTest,是以將運(yùn)行 androidTest。該義務(wù)履行以下操作:
- 確保應(yīng)用法度榜樣和測(cè)試應(yīng)用法度榜樣都被構(gòu)建 (依附于 assembleDebug 和 assembleTest)
- 安裝這兩個(gè)應(yīng)用法度榜樣
- 運(yùn)行測(cè)試
- 卸載這兩個(gè)應(yīng)用法度榜樣。
所有測(cè)試結(jié)不雅都邑保存為 XML 文件,路徑為
build/androidTest-results
(這類似于 jUnit 按期運(yùn)行的結(jié)不雅保存在 build/text-result 下面)
它可以經(jīng)由過程以下方法來設(shè)備
設(shè)備
android {
...
testOptions {
resultsDir = "$project.buildDir/foo/results"
}
}
Android.testOptions.resultsDir的值精曉過Project.file(String) 獲得
測(cè)試 Android Libraries
測(cè)試 Android Library項(xiàng)目與測(cè)試應(yīng)用法度榜樣項(xiàng)目標(biāo)方法完全一樣。
獨(dú)一的差別是全部庫 (和它的依附項(xiàng)) 會(huì)主動(dòng)作為L(zhǎng)ibrary依附添加到測(cè)試應(yīng)用法度榜樣中。結(jié)不雅就是測(cè)試 APK 不只包含其本身的代碼,還包含測(cè)試庫以及測(cè)試庫的所有依附項(xiàng)。
這個(gè)Library的manifest 會(huì)歸并到測(cè)試應(yīng)用法度榜樣的manifest中(如引用此Library的任何項(xiàng)目)。
AndroidTest義務(wù)改為僅安裝 (以及卸載)測(cè)試 APK (因?yàn)闆]有其他的 APK 要安裝)
其他的都是雷同的。
測(cè)試申報(bào)
當(dāng)運(yùn)行單位測(cè)試時(shí),Gradle 會(huì)輸出 HTML 申報(bào),以便利查看結(jié)不雅。
Android 插件在此基本上擴(kuò)大了 HTML 申報(bào),它聚合了所有連接的設(shè)備的測(cè)試結(jié)不雅。
單個(gè)項(xiàng)目標(biāo)申報(bào)
這個(gè)測(cè)試申報(bào)的項(xiàng)目會(huì)在運(yùn)行測(cè)試時(shí)主動(dòng)生成。它的默認(rèn)地位是
build/reports/androidTests
它類似于 jUnit 申報(bào)的地位build/reports/tests,或其他平日位于build/reports/<plugin>/的申報(bào)。
這個(gè)地位可以經(jīng)由過程以下方法自定義
android {
...
testOptions {
reportDir = "$project.buildDir/foo/report"
}
}
該申報(bào)將聚合在不合的設(shè)備運(yùn)行的測(cè)試。
多項(xiàng)目申報(bào)
在一個(gè)設(shè)置了一個(gè)或多個(gè)application和 library 項(xiàng)目標(biāo)多項(xiàng)目中,當(dāng)同時(shí)運(yùn)行所有的測(cè)試,為所有測(cè)試生成單個(gè)申報(bào)可能是異常有效的。
要做到這一點(diǎn),須要應(yīng)用同一個(gè)文件中的另一個(gè)插件。這個(gè)插件可以如下設(shè)備:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.6'
}
}
apply plugin: 'android-reporting'
這個(gè)插件應(yīng)當(dāng)在根項(xiàng)目中設(shè)備應(yīng)用,即在 settings.gradle同級(jí)目次的build.gradle中。
然后在根文件夾中,下面的敕令就可以運(yùn)行所有的測(cè)試并聚合測(cè)試申報(bào):
gradle deviceCheck mergeAndroidReports --continue
注: --continue選項(xiàng)確保所有子項(xiàng)目標(biāo)測(cè)試都邑被運(yùn)行,即使個(gè)中的一個(gè)子項(xiàng)目標(biāo)測(cè)試掉敗了。如不雅不加上這個(gè)選項(xiàng),第一個(gè)掉敗的測(cè)試將會(huì)中斷所有測(cè)試的運(yùn)行,這可能導(dǎo)致有些項(xiàng)目還沒有履行它們的測(cè)試。
Lint 支撐
大年夜 0.7.0 版本起,您可認(rèn)為一個(gè)指定的variant或所有的variants 運(yùn)行l(wèi)int,在這種情況下,它會(huì)生成一個(gè)申報(bào),描述每一個(gè)給定的問題都存在于哪些指定的variants 。
您可以經(jīng)由過程添加以下的一個(gè) lintOptions 節(jié)點(diǎn)對(duì)lint進(jìn)行設(shè)備。平日,您只須要指定個(gè)中的幾個(gè) ;以下列出了所有可用的選項(xiàng)。
android {
lintOptions {
// 設(shè)置為 true時(shí)lint將不申報(bào)分析的進(jìn)度
quiet true
// 如不雅為 true,則當(dāng)lint發(fā)明缺點(diǎn)時(shí)停止 gradle構(gòu)建
abortOnError false
// 如不雅為 true,則只申報(bào)缺點(diǎn)
ignoreWarnings true
// 如不雅為 true,則當(dāng)出缺點(diǎn)時(shí)會(huì)顯示文件的全路徑或絕對(duì)路徑 (默認(rèn)情況下為true)
//absolutePaths true
// 如不雅為 true,則檢查所有的問題,包含默認(rèn)不檢盤考題
checkAllWarnings true
// 如不雅為 true,則將所有警告視為缺點(diǎn)
warningsAsErrors true
// 不檢查給定的問題id
disable 'TypographyFractions','TypographyQuotes'
// 檢查給定的問題 id
enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
// * 僅 * 檢查給定的問題 id
check 'NewApi', 'InlinedApi'
// 如不雅為true,則在缺點(diǎn)申報(bào)的輸出中不包含源代碼行
noLines true
// 如不雅為 true,則對(duì)一個(gè)缺點(diǎn)的問題顯示它地點(diǎn)的所有處所,而不會(huì)截短列表,等等。
showAll true
// 重置 lint 設(shè)備(應(yīng)用默認(rèn)的嚴(yán)重性等設(shè)置)。
lintConfig file("default-lint.xml")
// 如不雅為 true,生成一個(gè)問題的純文本申報(bào)(默認(rèn)為false)
textReport true
// 設(shè)備寫入輸出結(jié)不雅的地位;它可所以一個(gè)文件或 “stdout”(標(biāo)準(zhǔn)輸出)
textOutput 'stdout'
// 如不雅為真,會(huì)生成一個(gè)XML申報(bào),以給Jenkins之類的應(yīng)用
xmlReport false
// 用于寫入申報(bào)的文件(如不雅不指定,默認(rèn)為lint-results.xml)
xmlOutput file("lint-report.xml")
// 如不雅為真,會(huì)生成一個(gè)HTML申報(bào)(包含問題的解釋,存在此問題的源碼,等等)
htmlReport true
// 寫入申報(bào)的路徑,它是可選的(默認(rèn)為構(gòu)建目次下的 lint-results.html )
htmlOutput file("lint-report.html")
// 設(shè)置為 true, 將使所有release 構(gòu)定都以issus的嚴(yán)重性級(jí)別為fatal(severity=false)的設(shè)置來運(yùn)行l(wèi)int// 并且,如不雅發(fā)清楚明了致命(fatal)的問題,將會(huì)中斷構(gòu)建(由膳綾擎提到的 abortOnError 控制)checkReleaseBuilds true
// 設(shè)置給定問題的嚴(yán)重級(jí)別(severity)為fatal (這意味著他們將會(huì)
// 在release構(gòu)建的時(shí)代檢查 (即使 lint 要檢查的問題沒有包含在代碼中)
fatal 'NewApi', 'InlineApi'
// 設(shè)置給定問題的嚴(yán)重級(jí)別為error
error 'Wakelock', 'TextViewEdits'
// 設(shè)置給定問題的嚴(yán)重級(jí)別為warning
warning 'ResourceAsColor'
// 設(shè)置給定問題的嚴(yán)重級(jí)別(severity)為ignore (和不檢查這個(gè)問題一樣)
ignore 'TypographyQuotes'
}
}
相關(guān)案例查看更多
相關(guān)閱讀
- 云南省建設(shè)廳網(wǎng)站
- 網(wǎng)站建設(shè)高手
- 云南網(wǎng)站建設(shè)報(bào)價(jià)
- 前端開發(fā)
- 小程序
- 網(wǎng)站小程序
- 北京小程序開發(fā)
- 網(wǎng)站建設(shè)招商
- 網(wǎng)站建設(shè)靠譜公司
- 云南網(wǎng)站開發(fā)
- 云南企業(yè)網(wǎng)站
- 跳轉(zhuǎn)小程序
- 汽車拆解系統(tǒng)
- 云南小程序被騙蔣軍
- 云南小程序開發(fā)制作公司
- 云南小程序被騙
- 霸屏推廣
- php網(wǎng)站
- 云南網(wǎng)站建設(shè)高手
- 網(wǎng)站建設(shè)快速優(yōu)化
- 云南省住房建設(shè)廳網(wǎng)站
- 云南小程序哪家好
- 云南省城鄉(xiāng)建設(shè)廳網(wǎng)站
- 旅游網(wǎng)站建設(shè)
- 云南小程序公司
- 網(wǎng)站建設(shè)首選公司
- 云南建設(shè)廳網(wǎng)站首頁
- 全國(guó)前十名小程序開發(fā)公司
- 小程序技術(shù)
- 小程序模板開發(fā)公司