module中implementation的包没法引用

Android studio升级到3.0以上之后,插件版本(plugin version)也随之升级到了3.0.0版本或以上。

工程中import的module中的dependencies 原来用的是compile,但在26还是28后强制使用implementation,所以你为了顺应潮流(安全)改成了implementation。但:

implementation指令

这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开

所以你module中的类可以用,但jar怎么都引用不了,你开始慌了...

正文:

        在3.0版本中,compile 指令被标注为过时方法,而新增了两个依赖指令,一个是implement 和api,这两个都可以进行依赖添加,但是有什么区别呢?

新建工程默认生成的app的build.gradle文件中的依赖:

dependencies {

    implementation fileTree(include: ['*.jar'], dir: 'libs')

   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'

}

[api 指令]

        完全等同于compile指令,没区别,你将所有的compile改成api,完全没有错。

[implementation指令]

        这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。
简单的说,就是使用implementation指令的依赖不会传递

例如,有一个module为testsdk,testsdk依赖于gson:

implementation 'com.google.code.gson:gson:2.8.2'

这时候,在testsdk里边的java代码是可以访问gson的。

另一个module为app,app依赖于testsdk:

implementation project(':testsdk')


这时候,因为testsdk使用的是implementation 指令来依赖gson,所以app里边不能引用gson。
但是,如果testsdk使用的是api来引用gson:

api 'com.google.code.gson:gson:2.8.2'

则与gradle3.0.0之前的compile指令的效果完全一样,app的module也可以引用gson。这就是api和implementation的区别。

建议

        在Google IO 相关话题的中提到了一个建议,就是依赖首先应该设置为implementation的,如果没有错,那就用implementation,如果有错,那么使用api指令。使用implementation会使编译速度有所增快。

原文:https://blog.csdn.net/mybook1122/article/details/78657392

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 7,588评论 0 3
  • 博客原文链接 Android百大框架排行榜(转) 说明: 无聊写一篇笔记式文章. 精力有限,很多错误之处,受时间与...
    码农朱同学阅读 7,753评论 0 27
  • 过去的一周,心态的迁善和调整是史无前例的,似乎真的想明白了很多。不再有那么多的计较和刻意。 放下很容易,但是并非不...
    马子木阅读 2,675评论 0 0
  • 千年前 你逃到边疆以北 俯视大地颤抖的光阴 满目苍痍 孒然一生 黄土风沙从荒野吹到枕边 醉生梦死 不曾喂饱空旷的渴...
    云_横阅读 1,072评论 0 0
  • 初秋的天气开始转凉,木头姐的心里却一阵狂躁郁闷。郁结在心的滋味,像把满溢的水罐硬生生地封存压紧,实心满满却闷沉痛苦...
    止树阅读 1,345评论 0 0