Gradle 依賴配置


今天查了下關於gradle中的依賴引用的情況: 

原文:https://zhuanlan.zhihu.com/p/110215979

當前Gradle中共有 5 種依賴關系 ;外加2種測試用的依賴

01. Implementation

      將指定的依賴添加到編譯路徑,並將該依賴打包到輸出文件中,如apk;

     但是這個依賴在編譯時不能暴露給其他模塊,例如依賴此模塊的其他模塊。這種方式指定的依賴在編譯時只能在當前模塊中訪問。

      

 02. api

      使用api配置的依賴會將對應的依賴添加到編譯路徑,並將依賴打包輸出,但是這個依賴是可以傳遞的,

      比如模塊A依賴模塊B,B依賴庫C,模塊B在編譯時能夠訪問到庫C,但是與implemetation不同的是,在模塊A中庫C也是可以訪問的。

      

 

 03. compileOnly

      compileOnly修飾的依賴會添加到編譯路徑中,但是不會打包到apk中,因此只能在編譯時訪問,且compileOnly修飾的依賴不會傳遞。

      

 

04. runtimeOnly

     這個與compileOnly相反,它修飾的依賴不會添加到編譯路徑中,但是被打包到apk中,運行時使用。

 

05. annotationProcessor

     用於注解處理器的依賴配置

 

測試用依賴
   testImplementation  和  androidTestImplementation

 

-------------------------------------------------------------------------------------------------------------

舉例:

   LomBok:  這個庫是用於在編譯時快速生成Getter和Setter等內容的,所以只使用在編譯階段,同時配置上注釋依賴處理

   

 

 

06. 對Jar或aar包的依賴配置

     在某些情況下,自己開發的jar 包,aar包或者第三方開發的包已經下載到本地,現在需要被項目引用到,該如何配置呢?

     在新建 項目后,在結構中,會有一個 libs目錄,一般情況下,我們會直接將第三方包放在這個目錄下;

     此時,對於包的引用有二種方式:

    方式A: 直接在dependencies中添加引用, 如下面二個例子 

                   **  implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')

                   **  implementation fileTree(dir: 'libs', include: ['*.jar'])         

                  此種方式簡單粗暴,但是不允許同時出現同一模塊不同編譯類型的jar(或aar),
                  例如,如果libs同時存在test-release.aar和test-debug.aar,他們都是來自同一個module的打包,但是只是編譯類型不一樣,如果同時存在的話,會編譯不過.

    方式B:先在gradle中添加目錄, 之后再按需要進行引用

                 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM