android gradle tools 3.X 中依賴,implementation 和compile區別
阿新 • • 發佈:2019-02-06
前言
2017 年google 後,Android studio 版本更新至3.0,更新中,連帶著com.android.tools.build:gradle 工具也升級到了3.0.0,在3.0.0中使用了最新的Gralde 4.0 里程碑版本作為gradle 的編譯版本,該版本gradle編譯速度有所加速,更加欣喜的是,完全支援Java8。當然,對於Kotlin的支援,在這個版本也有所體現,Kotlin外掛預設是安裝的。
在com.android.tools.build:gradle 3.0 以下版本依賴在gradle 中的宣告寫法
compile fileTree(dir: 'libs', include: ['*.jar'])
但在3.0後的寫法為
implementation fileTree(dir: 'libs', include: ['*.jar'])
或
api fileTree(dir: 'libs', include: ['*.jar'])
在3.0版本中,compile 指令被標註為過時方法,而新增了兩個依賴指令,一個是implement 和api,這兩個都可以進行依賴新增,但是有什麼區別呢?
api 指令
完全等同於compile指令,沒區別,你將所有的compile改成api,完全沒有錯。
implement指令
這個指令的特點就是,對於使用了該命令編譯的依賴,對該專案有依賴的專案將無法訪問到使用該命令編譯的依賴中的任何程式,也就是將該依賴隱藏在內部,而不對外部公開。
文不如圖
用api指令編譯,Glide依賴對app Module 是可見的
用implement指令編譯依賴對app Module 是不可見的
建議
在Google IO 相關話題的中提到了一個建議,就是依賴首先應該設定為implement的,如果沒有錯,那就用implement,如果有錯,那麼使用api指令,這樣會使編譯速度有所增快。
參考資料
需要科學上網