知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們在追求其視覺表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏壧峁┍憬莸闹С郑?
Android官方技術(shù)文檔翻譯——Gradle插件用戶指南(7)
發(fā)表時(shí)間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):106
本文譯自Android官方技巧文檔《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide。
翻譯不易,轉(zhuǎn)載請注明CSDN博客上的出處:
http://blog.csdn.net/maosidiaoxian/article/details/42417779
前三章見《Android官方技巧文檔翻譯——Gradle 插件用戶指南(1-3)》。
第四┞仿見《Android官方技巧文檔翻譯——Gradle 插件用戶指南(4)》。
第五章見《Android官方技巧文檔翻譯——Gradle 插件用戶指南(5)》。
第六章見《Android官方技巧文檔翻譯——Gradle 插件用戶指南(6)》。
翻譯工作耗時(shí)操心,如不雅你認(rèn)為本文翻譯得還OK,請點(diǎn)擊文末的“頂”,感謝。翻譯如有錯(cuò)訛,敬請斧正。
高等構(gòu)建定制
構(gòu)建選項(xiàng)
Java 編譯選項(xiàng)
android {
compileOptions {
sourceCompatibility = "1.6"
targetCompatibility = "1.6"
}
}
默認(rèn)值為“1.6”。這個(gè)設(shè)備會(huì)影響所有編譯 Java 源代碼的義務(wù)。
aapt 選項(xiàng)
android {
aaptOptions {
noCompress 'foo', 'bar'
ignoreAssetsPattern "!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"
}
}
這個(gè)設(shè)備會(huì)影響所有應(yīng)用aapt的義務(wù)。
dex 選項(xiàng)
android {
dexOptions {
incremental false
preDexLibraries = false
jumboMode = false
}
}
這個(gè)設(shè)備會(huì)影響所有應(yīng)用dex 的義務(wù)。
操作義務(wù)
根本的 Java 項(xiàng)目有一組有限的義務(wù)可以或許合營協(xié)作來創(chuàng)建一個(gè)輸出。
個(gè)中classes 義務(wù)是將 Java 源代碼進(jìn)行編譯的那個(gè)義務(wù)。
大年夜build.gradle經(jīng)由過程簡單地裹足本中應(yīng)用classes就能很輕易地拜訪它。這是project.tasks.classes的簡潔寫法。
在 Android 項(xiàng)目中,它會(huì)比較復(fù)雜一點(diǎn),因?yàn)榭赡苡写竽暌沽康睦淄牧x務(wù)并且他們的名字都是基于Build Types和Product Flavors生成。
android對象中有兩個(gè)(譯者注:喂術(shù)么感到是三個(gè)。難道是原文筆誤?)屬性就是為解決這個(gè)問題的:
- applicationVariants(僅實(shí)用于應(yīng)用法度榜樣插件)
- libraryVariants(僅實(shí)用于庫插件)
- testVariants (對兩個(gè)插件都實(shí)用)
留意,拜訪這些集合的任何一個(gè)都將觸發(fā)所有義務(wù)的生成。這意味著在拜訪這些集合之后不該該再進(jìn)行(從新)設(shè)備。
DomainObjectCollection可以對所有對象進(jìn)行直接拜訪,或經(jīng)由過程過濾器(這將會(huì)很便利)過濾。
android.applicationVariants.each { variant ->
....
}
這三個(gè)variant 類都有以部屬性:
屬性名稱 屬性類型 描述 name String variant的名稱。必須包管是獨(dú)一的。 description String 仁攀類可讀的對variant的描述。 dirName String variant的子文件夾名稱。必須包管是獨(dú)一的??赡軙?huì)是多個(gè)文件夾,即"debug/flavor1" baseName String variant的輸出的基本名稱必須包管是獨(dú)一的。 outputFile File variant的輸出。這是一個(gè)可讀可寫的屬性 processManifest ProcessManifest 處理manifest的義務(wù)。 aidlCompile AidlCompile 編譯AIDL文件的義務(wù)。 renderscriptCompile RenderscriptCompile 編譯Renderscript文件的義務(wù)。 mergeResources MergeResources 歸并資本的義務(wù)。 mergeAssets MergeAssets 歸并assets的義務(wù)。 processResources ProcessAndroidResources 處理和編譯資本的義務(wù)。 generateBuildConfig GenerateBuildConfig 生成 BuildConfig 類的義務(wù)。 javaCompile JavaCompile 編譯 Java 代碼的義務(wù)。 processJavaResources Copy 處理 Java 資本的義務(wù)。 assemble DefaultTask variant 的assemble錨義務(wù)。
ApplicationVariant 類增長了以部屬性:
屬性名稱 屬性類型 描述 buildType BuildType variant 的 BuildType。 productFlavors List<ProductFlavor> variant 的 ProductFlavors。老是不為null,但可所以空集合。 mergedFlavor ProductFlavor 對android.defaultConfig 和 variant.productFlavors的歸并 signingConfig SigningConfig 用于 variant 的 SigningConfig 對象 isSigningReady boolean 如不雅該 variant 有簽名所需的所有信息則為true。 testVariant BuildVariant 將會(huì)測試該variant的TestVariant dex Dex 將代碼生成dex的義務(wù)。如不雅variant是一個(gè)庫,這個(gè)值可認(rèn)為 null。 packageApplication PackageApplication 打包最終的APK的義務(wù)。如不雅variant是一個(gè)庫,這個(gè)值可認(rèn)為 null。 zipAlign ZipAlign 對apk進(jìn)行zipaligns(優(yōu)化對齊)的義務(wù)。如不雅variant是一個(gè)庫或者APK不克不及被簽名,這個(gè)值可認(rèn)為 null。 install DefaultTask 安裝義務(wù)??烧J(rèn)為 null。 uninstall DefaultTask 卸載義務(wù)。
LibraryVariant 類增長了以部屬性:
屬性名稱 屬性類型 描述 buildType BuildType variant 的 BuildType。 mergedFlavor ProductFlavor DefaultConfig 的值 testVariant BuildVariant 將會(huì)測試該variant 的 Build Variant packageLibrary Zip 打包成Library AAR 歸檔文件的義務(wù)。如不雅不是庫項(xiàng)目可認(rèn)為null。
TestVariant 類增長了以部屬性:
屬性名稱 屬性類型 描述 buildType BuildType variant 的 BuildType。 productFlavors List<ProductFlavor> variant 的 ProductFlavors。老是不為null,但可所以空集合。 mergedFlavor ProductFlavor 對android.defaultConfig 和 variant.productFlavors的歸并 signingConfig SigningConfig 用于 variant 的 SigningConfig 對象 isSigningReady boolean 如不雅該 variant 有簽名所需的所有信息則為true。 testedVariant BaseVariant 經(jīng)由TestVariant測試過的BaseVariant。 dex Dex 將代碼生成dex的義務(wù)。如不雅variant是一個(gè)庫,這個(gè)值可認(rèn)為 null。 packageApplication PackageApplication 打包最終的APK的義務(wù)。如不雅variant是一個(gè)庫,這個(gè)值可認(rèn)為 null。 zipAlign ZipAlign 對apk進(jìn)行zipaligns(優(yōu)化對齊)的義務(wù)。如不雅variant是一個(gè)庫或者APK不克不及被簽名,這個(gè)值可認(rèn)為 null。 install DefaultTask 安裝義務(wù)??烧J(rèn)為 null。 uninstall DefaultTask 卸載義務(wù)。 connectedAndroidTest DefaultTask 在已連接的設(shè)備上運(yùn)行 android 測試的義務(wù)。 providerAndroidTest DefaultTask 應(yīng)用擴(kuò)大 API 運(yùn)行android 測試的義務(wù)。
Android 的特定義務(wù)類型的 API。
- ProcessManifest
- File manifestOutputFile
- AidlCompile
- File sourceOutputDir
- RenderscriptCompile
- File sourceOutputDir
- File resOutputDir
- MergeResources
- File outputDir
- MergeAssets
- File outputDir
- ProcessAndroidResources
- File manifestFile
- File resDir
- File assetsDir
- File sourceOutputDir
- File textSymbolOutputDir
- File packageOutputFile
- File proguardOutputFile
- GenerateBuildConfig
- File sourceOutputDir
- Dex
- File outputFolder
- PackageApplication
- File resourceFile
- File dexFile
- File javaResourceDir
- File jniDir
- File outputFile
- 要修改最終輸出的文件,可以在 variant 對象上直接應(yīng)用“outputFile”(譯者注:1.0 版本經(jīng)由過程variant獲取到的是outputs,是一個(gè)List,須要經(jīng)由過程對其遍歷或取第一個(gè)元素variant.outputs[0].outputFile才能獲得outputFile對象)。
- ZipAlign
- File inputFile
- File outputFile
- 要修改最終輸出的文件,可以在 variant 對象上直接應(yīng)用“outputFile”(譯者注:1.0 版本經(jīng)由過程variant獲取到的是outputs,是一個(gè)List,須要經(jīng)由過程對其遍歷或取第一個(gè)元素variant.outputs[0].outputFile才能獲得outputFile對象)。
因?yàn)镚radle的工作道理以及Android 插件的設(shè)備方法,用于每個(gè)義務(wù)類型的API會(huì)有所限制。
起首,Gradle 想要讓義務(wù)只能設(shè)備輸入或輸出的地位和可能應(yīng)用的可選標(biāo)記。所以在這里,這些義務(wù)只能定義一些輸入或輸出。
其次,這些義務(wù)的絕大年夜多半的輸入都是有實(shí)際意義的,它們往往來自sourceSets、Build Types和Pruduct Flavor的混淆值。為了保持構(gòu)建文件易于瀏覽和懂得,目標(biāo)是要閃開辟人員經(jīng)由過程DSL進(jìn)行稍微調(diào)劑就可以修改構(gòu)建,而不是要深刻義務(wù)的選項(xiàng)和輸入并且去修改它們。
此外留意到,除了 ZipAlign 義務(wù)類型,所有其他類型都須要設(shè)立私稀有據(jù)來讓它們正常運(yùn)行。這意味著弗成妙手動(dòng)創(chuàng)建這些類型的新義務(wù)。
這個(gè) API 也可能會(huì)被更改。一般情況下,當(dāng)前 API 是環(huán)繞著義務(wù)給定的輸出或輸入(如不雅可能)的人口來添加額外的處理的(如不雅須要)。迎接反饋看法,特別是那些未預(yù)知的需求。
關(guān)于 Gradle 義務(wù) (DefaultTask,JavaCompile,Copy,Zip),請參閱 Gradle 文檔。
BuildType 和 Product Flavor 的屬性參考
即將推出。
關(guān)于 Gradle 義務(wù) (DefaultTask,JavaCompile,Copy,Zip),請參閱 Gradle 文檔。 <br4>
應(yīng)用 sourceCompatibility 1.7
經(jīng)由過程 Android KitKat (buildToolsVersion 19),你可以應(yīng)用鉆石運(yùn)算符(即<>),multi-catch,在switch語句中應(yīng)用string, try with resources等等。要做到這一點(diǎn),請將以下設(shè)備添加到您的構(gòu)建文件中:
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 19
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
留意,你可以把
minSdkVersion
的值設(shè)為19之前的版本,只是你只能應(yīng)用除了try with resources之外的其他新說話特點(diǎn)。如不雅你想要應(yīng)用 try with resources,你就須要把minSdkVersion
也設(shè)為 19。
你還須要確認(rèn) Gradle 應(yīng)用JDK 1.7或更高的版本。(并且Android Gradle 插件也須要0.6.1或更高的版本。)
相關(guān)案例查看更多
相關(guān)閱讀
- 楚雄小程序開發(fā)
- 軟件定制公司
- 網(wǎng)站建設(shè)案例
- 迪慶小程序開發(fā)
- 汽車報(bào)廢系統(tǒng)
- 模版消息
- 人口普查小程序
- 網(wǎng)站制作
- typescript
- 汽車報(bào)廢軟件
- 百度排名
- 文山小程序開發(fā)
- 日歷組件
- 云南電商網(wǎng)站建設(shè)
- 網(wǎng)站建設(shè)招商
- 云南etc微信小程序
- 報(bào)廢車
- 云南網(wǎng)站建設(shè)開發(fā)
- 云南百度小程序
- 南通小程序制作公司
- 網(wǎng)站建設(shè)選
- 云南小程序開發(fā)公司推薦
- 網(wǎng)站建設(shè)開發(fā)
- 云南網(wǎng)站建設(shè)招商
- 昆明軟件定制
- 微信分銷系統(tǒng)
- 支付寶小程序被騙
- 網(wǎng)站建設(shè)首選
- 昆明小程序開發(fā)
- 網(wǎng)站建設(shè)列表網(wǎng)