android gradle tools 3.X 中依賴,implementation 和compile區別

前言

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指令,這樣會使編譯速度有所增快。

參考資料

需要科學上網

Google I/O 2017 - How speed up Gradle builds (FULL VIDEO)

Google I/O 2017 - How speed up Gradle builds (NEW GRADLE PLUGIN 3.0.0 PART ONLY)

Google I/O 2017 - How speed up Gradle builds (reference to 1*)

Android documentation

發佈了24 篇原創文章 · 獲贊 82 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章