前言
不得不吐糟自己一下,作者因最近离职并出国浪去了,都冷落了简书妃子了,这样不好不好。
悲痛欲绝地默哀一秒钟后,还是回到主题上好了(顺便给点福利图,知道是谁的话可以在评论区给出你的答案哈)。
正文
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
对于这个问题,作者自己也是发现网上太多坑文,痛心疾首,索性重新整理一遍:
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创建新项目的时候你会发现compile被implementation替换了。
在3.0版本中,compile 依旧可以继续使用,而新增了两个依赖指令,implementation 和api,这两个都是依赖添加,但是有什么区别呢?
- api
完全等同于compile指令,你可以将所有的compile改成api。 -
implementation
这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。
implementation举个栗子:
这是app的网络模块层次,app module为最外层,可以直接调用network module,但由于network module在依赖okhttp等网络架构的时候使用implementation,app层便无法直接调用okhttp了。
小结
按照Google的说法,建议优先使用implementation,能有效增加编译速度。