Android Studio 3.0 开始废弃(obsolete)了很多原有的指令,并使用新的指令来代替它们。目的是为了加快编译构建的速度。

新旧指令对比

Android Studio 2.X Android Studio 3.X
apk runtimeOnly
provided compileOnly
compile api
implementation
debugCompile debugImplementation
releaseCompile releaseImplementation
testCompile testImplementation
androidTestCompile androidTestImplementation

Android Studio 3.X 的依赖关系

  • Unit Test implementation 输出为 testImplementation

  • Test implementation 输出为 androidTestImplementation

apk & runtimeOnly

只在生成apk的时候参与打包,编译时不会参与

provided & compileOnly

provided只提供编译支持,但是不会写入apk。使用provide可以避免支持包版本冲突。

例如:

客户提供了一个接口文档,所有厂商都必须按这份接口文档做。做好之后不要将这份公共的接口 jar 包打包进去。这时候就可以这种依赖方式了。

compile & api、implementation

compile 是和 api 对应的,两者效果相同。
api 与 implementation 的区别在于对外的可见性。

例如:

A api B,B api C
那么 A 模块不仅可以引用 B 模块,还可以引用 C 模块的接口和类。

A implementation B,B implementation C
那么 A 模块只能引用 B 模块的接口和类,不能引用 C 模块,也就是说 C 对于 A 是不可见的。这样做的好处是提高了编译和链接的速度。

testCompile(testImplementation)

testCompile 只在单元测试代码时有效。

debugCompile(debugImplementation)

debugCompile 只在debug模式的编译和最终的debug apk打包时有效

releaseCompile(releaseImplementation)

Release compile 仅仅针对Release 模式的编译和最终的Release apk打包。

更多相关文章

  1. android 单个模块编译
  2. android屏幕监控上下左右滑动
  3. Android(安卓)导入开发库transformDexArchiveWithExternalLibsDe
  4. Android(安卓)sensor hal 详解
  5. android中SurfaceView SurfaceHolder SurfaceHolder.Callback 关
  6. 第十一篇 ANDROID 系统网络连接和管理机制
  7. Android(安卓)8/9高通平台客制化虚拟导航按键隐藏
  8. android 应用升级模块解析
  9. 将新的驱动源文件添加进android内核进行编译

随机推荐

  1. [转]Android(安卓)SDK升级时的错误及解决
  2. 告别Dagger2模板代码:DaggerAndroid使用详
  3. Android(安卓)display架构分析(二)
  4. Android(安卓)Studio导入Eclipse项目
  5. android音频口通信——2FSK信号调制
  6. Android(安卓)--- libgdx android 学习初
  7. android 调试堆栈整理
  8. 2011.09.21——— android 动态壁纸开发
  9. Android:倍数提高工作效率的 Android(安
  10. android开发之权限问题整理