日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android官方技术文档翻译——Gradle 插件用户指南(7)

發布時間:2025/7/25 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android官方技术文档翻译——Gradle 插件用户指南(7) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

高級構建定制

構建選項

Java 編譯選項

android { ? ? compileOptions { ? ? ? ? sourceCompatibility = "1.6" ? ? ? ? targetCompatibility = "1.6" ? ? } } 默認值為“1.6”。這個配置會影響所有編譯 Java 源代碼的任務。

aapt 選項

android { ? ? aaptOptions { ? ? ? ? noCompress 'foo', 'bar' ? ? ? ? ignoreAssetsPattern "!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~" ? ? } }
這個配置會影響所有使用aapt的任務。

dex 選項

android { ? ? dexOptions { ? ? ? ? incremental false ?? ?? ? preDexLibraries = false
?? ?? ? jumboMode = false
? ? } } 這個配置會影響所有使用dex 的任務。

操作任務

基本的 Java 項目有一組有限的任務能夠共同協作來創建一個輸出。
其中classes?任務是將 Java 源代碼進行編譯的那個任務。
從build.gradle通過簡單地在腳本中使用classes就能很容易地訪問它。這是project.tasks.classes的簡潔寫法。

在 Android 項目中,它會比較復雜一點,因為可能有大量的相同的任務并且他們的名字都是基于Build Types和Product Flavors生成。?

android對象中有兩個(譯者注:我怎么感覺是三個。難道是原文筆誤?)屬性就是為解決這個問題的:?
  • applicationVariants(僅適用于應用程序插件)
  • libraryVariants(僅適用于庫插件)
  • testVariants?(對兩個插件都適用)
這三個會分別返回ApplicationVariant、LibraryVariant和TestVariant的DomainObjectCollection對象。

注意,訪問這些集合的任何一個都將觸發所有任務的生成。這意味著在訪問這些集合之后不應該再進行(重新)配置。

DomainObjectCollection可以對所有對象進行直接訪問,或通過過濾器(這將會很方便)過濾。?

android.applicationVariants.each { variant -> ? ? .... }
這三個variant 類都有以下屬性:

?屬性名稱?屬性類型?描述
?name?String?variant的名稱。必須保證是唯一的。
?description?String?人類可讀的對variant的描述。
?dirName?String?variant的子文件夾名稱。必須保證是唯一的。可能會是多個文件夾,即"debug/flavor1"
?baseName?String?variant的輸出的基礎名稱必須保證是唯一的。
?outputFile?File?variant的輸出。這是一個可讀可寫的屬性
?processManifest?ProcessManifest?處理manifest的任務。
?aidlCompile?AidlCompile?編譯AIDL文件的任務。
?renderscriptCompile?RenderscriptCompile?編譯Renderscript文件的任務。
?mergeResources?MergeResources?合并資源的任務。
?mergeAssets?MergeAssets?合并assets的任務。
?processResources?ProcessAndroidResources?處理和編譯資源的任務。
?generateBuildConfig?GenerateBuildConfig?生成 BuildConfig 類的任務。
?javaCompile?JavaCompile?編譯 Java 代碼的任務。
?processJavaResources?Copy?處理 Java 資源的任務。
?assemble?DefaultTask?variant 的assemble錨任務。

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?將會測試該variant的TestVariant
?dex?Dex?將代碼生成dex的任務。如果variant是一個庫,這個值可以為 null。
?packageApplication?PackageApplication?打包最終的APK的任務。如果variant是一個庫,這個值可以為 null。
?zipAlign?ZipAlign?對apk進行zipaligns(優化對齊)的任務。如果variant是一個庫或者APK不能被簽名,這個值可以為 null。
?install?DefaultTask?安裝任務。可以為 null。
?uninstall?DefaultTask?卸載任務。

LibraryVariant?類增加了以下屬性:

?屬性名稱?屬性類型?描述
?buildType?BuildType?variant 的 BuildType。
?mergedFlavor?ProductFlavor?DefaultConfig 的值
?testVariant?BuildVariant?將會測試該variant 的 Build Variant
?packageLibrary?Zip?打包成Library AAR 歸檔文件的任務。如果不是庫項目可以為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?經過TestVariant測試過的BaseVariant。
?dex?Dex?將代碼生成dex的任務。如果variant是一個庫,這個值可以為 null。
?packageApplication?PackageApplication?打包最終的APK的任務。如果variant是一個庫,這個值可以為 null。
?zipAlign?ZipAlign?對apk進行zipaligns(優化對齊)的任務。如果variant是一個庫或者APK不能被簽名,這個值可以為 null。
?install?DefaultTask?安裝任務。可以為 null。
?uninstall?DefaultTask?卸載任務。
?connectedAndroidTest?DefaultTask?在已連接的設備上運行 android 測試的任務。
?providerAndroidTest?DefaultTask?使用擴展 API 運行android 測試的任務。

Android 的特定任務類型的 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 對象上直接使用“outputFile”(譯者注:1.0 版本通過variant獲取到的是outputs,是一個List,需要通過對其遍歷或取第一個元素 variant.outputs[0].outputFile才能獲得outputFile對象)。
  • ZipAlign
    • File inputFile
    • File outputFile
      • 要 修改最終輸出的文件,可以在 variant 對象上直接使用“outputFile”(譯者注:1.0 版本通過variant獲取到的是outputs,是一個List,需要通過對其遍歷或取第一個元素 variant.outputs[0].outputFile才能獲得outputFile對象)。

由于Gradle的工作原理以及Android 插件的配置方式,用于每個任務類型的API會有所限制。 首先,Gradle 想要讓任務只能配置輸入或輸出的位置和可能使用的可選標志。所以在這里,這些任務只能定義一些輸入或輸出。
其次,這些任務的絕大多數的輸入都是有實際意義的,它們往往來自sourceSets、Build Types和Pruduct Flavor的混合值。為了保持構建文件易于閱讀和理解,目的是要讓開發人員通過DSL進行稍微調整就可以修改構建,而不是要深入任務的選項和輸入并且去修改它們。
此外注意到,除了 ZipAlign 任務類型,所有其他類型都需要設立私有數據來讓它們正常運行。這意味著不可能手動創建這些類型的新任務。

這個 API 也可能會被更改。一般情況下,當前 API 是圍繞著任務給定的輸出或輸入(如果可能)的入口來添加額外的處理的(如果需要)。歡迎反饋意見,特別是那些未預知的需求。

關于 Gradle 任務 (DefaultTask,JavaCompile,Copy,Zip),請參閱 Gradle 文檔。?

BuildType 和 Product Flavor 的屬性參考

即將推出。 關于 Gradle 任務 (DefaultTask,JavaCompile,Copy,Zip),請參閱 Gradle 文檔。 <br4>

使用 sourceCompatibility 1.7

通過 Android KitKat (buildToolsVersion 19),你可以使用鉆石運算符(即<>),multi-catch,在switch語句中使用string, try with resources等等。要做到這一點,請將以下配置添加到您的構建文件中:
android { ? ? compileSdkVersion 19 ? ? buildToolsVersion "19.0.0"
? ? defaultConfig { ? ? ? ? minSdkVersion 7 ? ? ? ? targetSdkVersion 19 ? ? }
? ??compileOptions { ? ? ? ? sourceCompatibility JavaVersion.VERSION_1_7 ? ? ? ? targetCompatibility JavaVersion.VERSION_1_7 ? ? } }
注意,你可以把?minSdkVersion?的值設為19之前的版本,只是你只能使用除了try with resources之外的其他新語言特性。如果你想要使用 try with resources,你就需要把minSdkVersion?也設為 19。
你還需要確認 Gradle 使用JDK 1.7或更高的版本。(并且Android Gradle 插件也需要0.6.1或更高的版本。)

轉載于:https://www.cnblogs.com/6060b/p/4202931.html

總結

以上是生活随笔為你收集整理的Android官方技术文档翻译——Gradle 插件用户指南(7)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。