還再用compile依賴?那你就落后啦

想第一時間獲取我的最新文章,請關(guān)注公眾號: 技術(shù)特工隊

在上上一篇文章《Android Studio 3.0版本正式發(fā)布啦》(可點擊傳送)中說到AS 3.0 正式版已經(jīng)出來了,講到新版本支持的一些新特性,那么今天就來說說新版本中 Moudle 中 build.gradle 文件中的變化。

我們來看看新建一個項目在 Moudle 中的 dependencies 中的變化。

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

發(fā)現(xiàn)我們經(jīng)常添加依賴使用的 compile 不見了,而現(xiàn)在改變?yōu)?strong>implementation 了,那么就來看看這個到底是有什么新的意思呢。

其實在新版本 Android Gradle plugin 3.0 中 已經(jīng)將 compile 標(biāo)記為過時了,而取而代之的是

implementationapi 兩個關(guān)鍵字。那么它們有什么區(qū)別呢?

api關(guān)鍵字 其實等同于 compile,但為什么要換個名字呢,目前還沒有查到相關(guān)的信息,如有大神知道,請留言告知。

implementation :使用了該命令編譯的依賴,它僅僅對當(dāng)前的 Moudle 提供接口。例如我們當(dāng)前項目結(jié)構(gòu)如下:

image

LibraryA 中引用了 LibraryC 的庫,如果對 LibraryC 的依賴用的是 implementation 關(guān)鍵字。 如下:

dependencies {
    . . . . 
    implementation project(path:':libraryC')
}

那么 LibraryC 中的接口,僅僅只能給 LibraryA 使用,而我們的 App Moudle 是無法訪問到 LibraryC 提供的接口的,也就是將該依賴隱藏在內(nèi)部,而不對外部公開。這就是 implementation 關(guān)鍵字的作用。

那為什么要這么做呢?

答案是: 1. 加快編譯速度。2. 隱藏對外不必要的接口。

為什么能加快編譯速度呢?

這對于大型項目含有多個 Moudle 模塊的, 以上圖為例,比如我們改動 LibraryC 接口的相關(guān)代碼,這時候編譯只需要單獨編譯 LibraryA 模塊就行, 如果使用的是 api 或者舊時代的 compile,由于App Moudle 也可以訪問到 LibraryC ,所以 App Moudle 部分也需要重新編譯。當(dāng)然這是在全編的情況下。

至于編譯速度的對比,國外有個小哥已經(jīng)做了簡單的對比,效果還是不錯。地址可點擊原文跳轉(zhuǎn)過去查看。

那么我們現(xiàn)有項目中的依賴如何修改呢? 答案是:將 compile 都修改為 implementation然后嘗試進(jìn)行項目構(gòu)建,如果構(gòu)建成功那么恭喜你,如果構(gòu)建不成功,則查看相關(guān)的依賴項,并將其修改為 api關(guān)鍵字依賴。

好了,今天就介紹這一個知識點,如果你有收獲就關(guān)注我們吧,給我點個贊吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,901評論 25 709
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,261評論 6 342
  • 一.榜單介紹 排行榜包括四大類: 單一框架:僅提供路由、網(wǎng)絡(luò)層、UI層、通信層或其他單一功能的框架 混合開發(fā)框架:...
    偉子男閱讀 5,356評論 0 161
  • 希望不論在哪(宗教文學(xué)科學(xué)生活...)都是一個永恒且迷人的主題。它是黑暗隧道另一頭微弱的亮光,是《肖申克的救贖》里...
    33淑瑪閱讀 440評論 0 0

友情鏈接更多精彩內(nèi)容