<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/ 依賴(lài)關(guān)系,Android 庫和多項目設置 - Dependencies,Android Libraries and Multi-
          依賴(lài)關(guān)系,Android 庫和多項目設置 - Dependencies,Android Libraries and Multi-
          要求 - Requirements
          構建變種版本 - Build Variants
          高級構建定制 - Advanced Build Customization
          測試 - Testing
          基本項目 - Basic Project
          簡(jiǎn)介 - Introduction

          依賴(lài)關(guān)系,Android 庫和多項目設置 - Dependencies,Android Libraries and Multi-

          Gradle項目可以依賴(lài)于其它組件。這些組件可以是外部二進(jìn)制包,或者是其它的Gradle項目。

          依賴(lài)二進(jìn)制包

          本地包

          配置一個(gè)外部庫的jar包依賴(lài),你需要在compile配置中添加一個(gè)依賴(lài)。

              dependencies {
                  compile files('libs/foo.jar')
              }
          
              android {
                  ...
              }

          注意:
          這個(gè)dependencies DSL標簽是標準Gradle API中的一部分,所以它不屬于android標簽。

          這個(gè)compile配置將被用于編譯main application。它里面的所有東西都被會(huì )被添加到編譯的classpath中,同時(shí)也會(huì )被打包進(jìn)最終的APK。 以下是添加依賴(lài)時(shí)可能用到的其它一些配置選項:

          • compile main application(主module)。
          • androidTestCompile test application(測試module)。
          • debugCompile debug Build Type(debug類(lèi)型的編譯)。
          • releaseCompile release Build Type(發(fā)布類(lèi)型的編譯)。

          因為沒(méi)有可能去構建一個(gè)沒(méi)有關(guān)聯(lián)任何Build Type(構建類(lèi)型)的APK,APK默認配置了兩個(gè)或兩個(gè)以上的編譯配置:compile和< buildtype >Compile. 創(chuàng )建一個(gè)新的_Build Type_將會(huì )自動(dòng)創(chuàng )建一個(gè)基于它名字的新配置。

          這對于debug版本需要使用一個(gè)自定義庫(為了反饋實(shí)例化的崩潰信息等)但發(fā)布版本不需要,或者它們依賴(lài)于同一個(gè)庫的不同版本時(shí)會(huì )非常有用。

          遠程文件

          Gradle支持從Maven或者Ivy倉庫中拉取文件。

          首先必須將倉庫添加到列表中,然后必須在依賴(lài)中聲明Maven或者Ivy聲明的文件。

              repositories {
                  mavenCentral()
              }
          
              dependencies {
                  compile 'com.google.guava:guava:11.0.2'
              }
          
              android {
                  ...
              }

          注意:
          mavenCentral()是指定倉庫URL的簡(jiǎn)單方法。Gradle支持遠程和本地倉庫。

          注意:
          Gradle會(huì )遵循依賴(lài)關(guān)系的傳遞性。這意味著(zhù)如果一個(gè)依賴(lài)本身依賴(lài)于其它東西,這些東西也會(huì )一并被拉取回來(lái)。

          更多關(guān)于設置依賴(lài)關(guān)系的信息,請參考 Gradle 用戶(hù)指南DSL 文檔。

          多項目設置

          Gradle項目也可以通過(guò)使用多項目配置依賴(lài)于其它Gradle項目。

          多項目配置的實(shí)現通常是在一個(gè)根項目路徑下將所有項目作為子文件夾包含進(jìn)去。

          例如,給定以下項目結構:

              MyProject/
               + app/
               + libraries/
                  + lib1/
                  + lib2/

          我們可以定義3個(gè)項目。Grand將會(huì )按照以下名字映射它們:

              :app
              :libraries:lib1
              :libraries:lib2

          每一個(gè)項目都擁有自己的build.gradle文件來(lái)聲明自己如何構建。 另外,在根目錄下還有一個(gè)_setting.gradle_文件用于聲明所有項目。 這些文件的結構如下:

              MyProject/
               | settings.gradle
               + app/
                  | build.gradle
               + libraries/
                  + lib1/
                     | build.gradle
                  + lib2/
                     | build.gradle

          其中setting.gradle的內容非常簡(jiǎn)單:

              include ':app', ':libraries:lib1', ':libraries:lib2'

          這里定義了哪一個(gè)文件夾才是真正的Gradle項目。

          其中:app項目可能依賴(lài)于這些庫,這是通過(guò)以下依賴(lài)配置聲明的:

              dependencies {
                  compile project(':libraries:lib1')
              }

          更多關(guān)于多項目配置的信息請參考 這里 。

          庫項目

          在上面的多項目配置中,:libraries:lib1:libraries:lib2可能是一個(gè)Java項目,并且:app這個(gè)Android項目將會(huì )使用它們的jar包輸出。

          但是,如果你想要共享代碼來(lái)訪(fǎng)問(wèn)Android API或者使用Android樣式的資源,那么這些庫就不能是通常的Java項目,而應該是Android庫項目。

          創(chuàng )建一個(gè)庫項目

          一個(gè)庫項目與通常的Android項目非常類(lèi)似,只是有一點(diǎn)小區別。

          盡管構建庫項目不同于構建應用程序,它們使用了不同的plugin。但是在內部這些plugin共享了大部分相同的代碼,并且它們都由相同的com.android.tools.build.gradle.jar提供。

              buildscript {
          
                  repositories {
                      mavenCentral()
                  }
          
                  dependencies {
                      classpath 'com.android.tools.build:gradle:0.5.6'
                  }
          
              }
          
              apply plugin: 'android-library'
          
              android {
                  compileSdkVersion 15
              }

          這里創(chuàng )建了一個(gè)使用API 15編譯_SourceSet_的庫項目,并且依賴(lài)關(guān)系的配置方法與應用程序項目的配置方法一樣,同樣也支持自定義配置。

          普通項目和庫項目之間的區別

          一個(gè)庫項目的main輸出是一個(gè).aar包(它代表Android的歸檔文件)。它組合了編譯代碼(例如jar包或者是本地的.so文件)和資源(manifest,res,assets)。 一個(gè)庫項目同樣也可以獨立于應用程序生成一個(gè)測試用的apk來(lái)測試。

          標識Task同樣適用于庫項目(assembleDebug,assembleRelease),因此在命令行上與構建一個(gè)項目沒(méi)有什么不同。

          其余的部分,庫項目與應用程序項目一樣。它們都擁有build type和product flavor,也可以生成多個(gè)aar版本。 記住大部分Build Type的配置不適用于庫項目。但是你可以根據庫項目是否被其它項目使用或者是否用來(lái)測試來(lái)使用自定義的sourceSet改變庫項目的內容。

          引用一個(gè)庫項目

          引用一個(gè)庫項目的方法與引用其它項目的方法一樣:

              dependencies {
                  compile project(':libraries:lib1')
                  compile project(':libraries:lib2')
              }

          注意:
          如果你要引用多個(gè)庫,那么排序將非常重要。這類(lèi)似于舊構建系統里面的project.properties文件中的依賴(lài)排序。

          庫項目發(fā)布

          一般情況下一個(gè)庫只會(huì )發(fā)布它的release Variant(變種)版本。這個(gè)版本將會(huì )被所有引用它的項目使用,而不管它們本身自己構建了什么版本。這是由于Gradle的限制,我們正在努力消除這個(gè)問(wèn)題,所以這只是臨時(shí)的限制。

          你可以控制哪一個(gè)Variant版本作為發(fā)行版:

              android {
                  defaultPublishConfig "debug"
              }

          注意這里的發(fā)布配置名稱(chēng)引用的是完整的Variant版本名稱(chēng)。Relesae,_debug_只適用于項目中沒(méi)有其它特性版本的時(shí)候使用。如果你想要使用其它Variant版本取代默認的發(fā)布版本,你可以:

              android {
                  defaultPublishConfig "flavor1Debug"
              }

          將庫項目的所有Variant版本都發(fā)布也是可能的。我們計劃在一般的項目依賴(lài)項目(類(lèi)似于上述所說(shuō)的)情況下允許這種做法,但是由于Gradle的限制(我們也在努力修復這個(gè)問(wèn)題)現在還不太可能。 默認情況下沒(méi)有啟用發(fā)布所有Variant版本??梢酝ㄟ^(guò)以下啟用:

              android {
                  publishNonDefault true
              }

          理解發(fā)布多個(gè)Variant版本意味著(zhù)發(fā)布多個(gè)arr文件而不是一個(gè)arr文件包含所有Variant版本是非常重要的。每一個(gè)arr包都包含一個(gè)單一的Variant版本。 發(fā)布一個(gè)變種版本意味著(zhù)構建一個(gè)可用的arr文件作為Gradle項目的輸出文件。無(wú)論是發(fā)布到一個(gè)maven倉庫,還是其它項目需要創(chuàng )建一個(gè)這個(gè)庫項目的依賴(lài)都可以使用到這個(gè)文件。

          Gradle有一個(gè)默認文件的概念。當添加以下配置后就會(huì )被使用到:

              compile project(':libraries:lib2')

          創(chuàng )建一個(gè)其它發(fā)布文件的依賴(lài),你需要指定具體使用哪一個(gè):

              dependencies {
                  flavor1Compile project(path: ':lib1', configuration: 'flavor1Release')
                  flavor2Compile project(path: ':lib1', configuration: 'flavor2Release')
              }

          重要:
          注意已發(fā)布的配置是一個(gè)完整的Variant版本,其中包括了build type,并且需要像以上一樣被引用。

          重要:
          當啟用非默認發(fā)布,maven發(fā)布插件將會(huì )發(fā)布其它Variant版本作為擴展包(按分類(lèi)器分類(lèi))。這意味著(zhù)不能真正的兼容發(fā)布到maven倉庫。你應該另外發(fā)布一個(gè)單一的Variant版本到倉庫中,或者允許發(fā)布所有配置以支持跨項目依賴(lài)。

          日韩性做爰免费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>