前言
不得不吐糟自己一下挥下,作者因最近離職并出國浪去了汰具,都冷落了簡書妃子了哪亿,這樣不好不好粥烁。
悲痛欲絕地默哀一秒鐘后,還是回到主題上好了(順便給點福利圖蝇棉,知道是誰的話可以在評論區(qū)給出你的答案哈)讨阻。
正文
Android Studio 2.3升級到Android Studio 3.0 Gradle builde報錯:
Unable to resolve dependency for ':app@xxPreview/compileClasspath':com.android.support:appcompat-v7:26.1.0
對于這個問題,作者自己也是發(fā)現(xiàn)網(wǎng)上太多坑文篡殷,痛心疾首钝吮,索性重新整理一遍:
1.自行下載最新的gradle4.0以上(AS3.0最低支持4.0),且在Preferences的Gradle里配置,記得不要勾選offline work
- 項目外層build.gradle 的com.android.tools.build:gradle需要升級到3.0
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
}
- 指令更新奇瘦。如果用AS3.0創(chuàng)建新項目的時候你會發(fā)現(xiàn)compile被implementation替換了棘催。
在3.0版本中,compile 依舊可以繼續(xù)使用耳标,而新增了兩個依賴指令醇坝,implementation 和api,這兩個都是依賴添加次坡,但是有什么區(qū)別呢呼猪?
- api
完全等同于compile指令,你可以將所有的compile改成api砸琅。 -
implementation
這個指令的特點就是宋距,對于使用了該命令編譯的依賴,對該項目有依賴的項目將無法訪問到使用該命令編譯的依賴中的任何程序症脂,也就是將該依賴隱藏在內(nèi)部谚赎,而不對外部公開。
implementation舉個栗子:
這是app的網(wǎng)絡模塊層次诱篷,app module為最外層壶唤,可以直接調用network module,但由于network module在依賴okhttp等網(wǎng)絡架構的時候使用implementation兴蒸,app層便無法直接調用okhttp了视粮。
網(wǎng)絡層次
小結
按照Google的說法细办,建議優(yōu)先使用implementation橙凳,能有效增加編譯速度。