<wbr id="jl7f7"></wbr>

        <i id="jl7f7"></i>
          <acronym id="jl7f7"></acronym>

          <s id="jl7f7"></s>

          <ins id="jl7f7"></ins><button id="jl7f7"><strong id="jl7f7"></strong></button>
          鍍金池/ 教程/ Android/ 高級構建定制 - Advanced Build Customization
          依賴(lài)關(guān)系,Android 庫和多項目設置 - Dependencies,Android Libraries and Multi-
          要求 - Requirements
          構建變種版本 - Build Variants
          高級構建定制 - Advanced Build Customization
          測試 - Testing
          基本項目 - Basic Project
          簡(jiǎn)介 - Introduction

          高級構建定制 - Advanced Build Customization

          構建選項

          Java 編譯選項)

              android {
                  compileOptions {
                      sourceCompatibility = "1.6"
                      targetCompatibility = "1.6"
                  }
              }

          默認值是“1.6”。這個(gè)設置將影響所有task編譯Java源代碼。

          aapt 選項

              android {
                  aaptOptions {
                      noCompress 'foo', 'bar'
                      ignoreAssetsPattern "!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"
                  }
              }

          這將影響所有使用aapt的task。

          dex 選項

              android {
                  dexOptions {
                      incremental false
          
                      preDexLibraries = false
          
                      jumboMode = false
          
                  }
              }

          這將應用所有使用dex的task。

          操作 task

          基礎Java項目有一組有限的task用于互相處理生成一個(gè)輸出。 classes是一個(gè)編譯Java源代碼的task??梢栽赽uild.gradle文件中通過(guò)腳本很容易使用classes。這是project.tasks.classes的縮寫(xiě)。

          在A(yíng)ndroid項目中,相比之下這就有點(diǎn)復雜。因為Android項目中會(huì )有大量相同的task,并且它們的名字基于_Build Types_和_Product Flavor_生成。

          為了解決這個(gè)問(wèn)題,android對象有兩個(gè)屬性:

          • applicationVariants(只適用于app plugin)
          • libraryVariants(只適用于library plugin)
          • testVariants(兩個(gè)plugin都適用)

          這三個(gè)都會(huì )分別返回一個(gè)ApplicationVariant、LibraryVariant和TestVariant對象的DomainObjectCollection。

          注意使用這三個(gè)collection中的其中一個(gè)都會(huì )觸發(fā)生成所有對應的task。這意味著(zhù)使用collection之后不需要更改配置。

          DomainObjectCollection可以直接訪(fǎng)問(wèn)所有對象,或者通過(guò)過(guò)濾器進(jìn)行篩選。

              android.applicationVariants.each { variant ->
                  ....
              }

          這三個(gè)variant類(lèi)都共享下面的屬性:

          屬性名 屬性類(lèi)型 說(shuō)明
          name String Variant的名字,必須是唯一的。
          description String Variant的描述說(shuō)明。
          dirName String Variant的子文件夾名,必須也是唯一的??赡芤矔?huì )有不止一個(gè)子文件夾,例如“debug/flavor1”
          baseName String Variant輸出的基礎名字,必須唯一。
          outputFile File Variant的輸出,這是一個(gè)可讀可寫(xiě)的屬性。
          processManifest ProcessManifest 處理Manifest的task。
          aidlCompile AidlCompile 編譯AIDL文件的task。
          renderscriptCompile RenderscriptCompile 編譯Renderscript文件的task。
          mergeResources MergeResources 混合資源文件的task。
          mergeAssets MergeAssets 混合asset的task。
          processResources ProcessAndroidResources 處理并編譯資源文件的task。
          generateBuildConfig GenerateBuildConfig 生成BuildConfig類(lèi)的task。
          javaCompile JavaCompile 編譯Java源代碼的task。
          processJavaResources Copy 處理Java資源的task。
          assemble DefaultTask Variant的標志性assemble task。

          ApplicationVariant類(lèi)還有以下附加屬性:

          屬性名 屬性類(lèi)型 說(shuō)明
          buildType BuildType Variant的BuildType。
          productFlavors List Variant的ProductFlavor。一般不為空但也允許空值。
          mergedFlavor ProductFlavor android.defaultConfig和variant.productFlavors的合并。
          signingConfig SigningConfig Variant使用的SigningConfig對象。
          isSigningReady boolean 如果是true則表明這個(gè)Variant已經(jīng)具備了所有需要簽名的信息。
          testVariant BuildVariant 將會(huì )測試這個(gè)Variant的TestVariant。
          dex Dex 將代碼打包成dex的task。如果這個(gè)Variant是個(gè)庫,這個(gè)值可以為空。
          packageApplication PackageApplication 打包最終APK的task。如果這個(gè)Variant是個(gè)庫,這個(gè)值可以為空。
          zipAlign ZipAlign zip壓縮APK的task。如果這個(gè)Variant是個(gè)庫或者APK不能被簽名,這個(gè)值可以為空。
          install DefaultTask 負責安裝的task,不能為空。
          uninstall DefaultTask 負責卸載的task。

          LibraryVariant類(lèi)還有以下附加屬性:

          屬性名 屬性類(lèi)型 說(shuō)明
          buildType BuildType Variant的BuildType.
          mergedFlavor ProductFlavor The defaultConfig values
          testVariant BuildVariant 用于測試這個(gè)Variant。
          packageLibrary Zip 用于打包庫項目的AAR文件。如果是個(gè)庫項目,這個(gè)值不能為空。

          TestVariant類(lèi)還有以下屬性:

          屬性名 屬性類(lèi)型 說(shuō)明
          buildType BuildType Variant的Build Type。
          productFlavors List Variant的ProductFlavor。一般不為空但也允許空值。
          mergedFlavor ProductFlavor android.defaultConfig和variant.productFlavors的合并。
          signingConfig SigningConfig Variant使用的SigningConfig對象。
          isSigningReady boolean 如果是true則表明這個(gè)Variant已經(jīng)具備了所有需要簽名的信息。
          testedVariant BaseVariant TestVariant測試的BaseVariant
          dex Dex 將代碼打包成dex的task。如果這個(gè)Variant是個(gè)庫,這個(gè)值可以為空。
          packageApplication PackageApplication 打包最終APK的task。如果這個(gè)Variant是個(gè)庫,這個(gè)值可以為空。
          zipAlign ZipAlign zip壓縮APK的task。如果這個(gè)Variant是個(gè)庫或者APK不能被簽名,這個(gè)值可以為空。
          install DefaultTask 負責安裝的task,不能為空。
          uninstall DefaultTask 負責卸載的task。
          connectedAndroidTest DefaultTask 在連接設備上行執行Android測試的task。
          providerAndroidTest DefaultTask 使用擴展API執行Android測試的task。

          Android task特有類(lèi)型的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”可以改變最終的輸出文件夾。
          • ZipAlign
            • File inputFile
            • File outputFile
              • 直接在Variant對象中使用“outputFile”可以改變最終的輸出文件夾。

          每個(gè)task類(lèi)型的API由于Gradle的工作方式和Android plugin的配置方式而受到限制。 首先,Gradle意味著(zhù)擁有的task只能配置輸入輸出的路徑和一些可能使用的選項標識。因此,task只能定義一些輸入或者輸出。

          其次,這里面大多數task的輸入都不是單一的,一般都混合了sourceSet、_Build Type_和_Product Flavor_中的值。為了保持構建文件的簡(jiǎn)單和可讀性,目標是要讓開(kāi)發(fā)者通過(guò)DSL語(yǔ)言修改這些對象來(lái)配飾構建的過(guò)程,而不是深入修改輸入和task的選項。

          另外需要注意,除了ZipAlign這個(gè)task類(lèi)型,其它所有類(lèi)型都要求設置私有數據來(lái)讓它們運行。這意味著(zhù)不可能自動(dòng)創(chuàng )建這些類(lèi)型的新task實(shí)例。

          這些API也可能會(huì )被更改。一般來(lái)說(shuō),目前的API是圍繞著(zhù)給定task的輸入和輸出入口來(lái)添加額外的處理(如果需要的時(shí)候)。歡迎反饋意見(jiàn),特別是那些沒(méi)有預見(jiàn)過(guò)的需求。

          對于Gradle的task(DefaultTask,JavaCompile,Copy,Zip),請參考Gradle文檔。

          BuildType 和 Product Flavor 屬性參考

          即將到來(lái)... 對于Gradle的task(DefaultTask,JavaCompile,Copy,Zip),請參考Gradle文檔。

          使用 JDK 1.7 版本的 sourceCompatibility

          使用Android KitKat(19版本的buildTools)就可以使用diamond operator,multi-catch,switch中使用字符串,try with resource等等(譯注:都是JDK7的一些新特性,詳情請參考JDK7文檔)。設置使用1.7版本,需要修改你的構建文件:

              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之外的其它新語(yǔ)言特性。如果你想要使用try with resources特性,你就需要把minSdkVersion也設置為19。

          你同樣也需要確認Gradle使用1.7或者更高版本的JDK(Android Gradle plugin也需要0.6.1或者更高的版本)。

          日韩性做爰免费a片aa片,天天躁恨恨躁夜躁2020,精品久久综合1区2区3区激情,精产国品一二三产品麻豆

          <wbr id="jl7f7"></wbr>

                <i id="jl7f7"></i>
                  <acronym id="jl7f7"></acronym>

                  <s id="jl7f7"></s>

                  <ins id="jl7f7"></ins><button id="jl7f7"><strong id="jl7f7"></strong></button>