Android开发经验谈Android开发Android技术知识

Android中gradle的implementation和ap

2018-06-04  本文已影响5人  hongjay

众所周知。bmob提供的Androidsdk必须要去掉重复依赖才能使用。


implementation 'cn.bmob.android:bmob-sdk:3.6.2'

如图所示。bmob依赖了gson、okio、rx等jar

这个问题在as3.0以前可以通过去除okhttp中的okio,不依赖gson来解决。

但是到3.0以后我使用implementation 来依赖bmob的sdk竟然在代码中出现了无法找到gson相关文件的错误。

如果再在引用gson库则可以用过编译,而运行时提示

Program type already present: com.google.gson.annotations.Since

表示依赖冲突了。


// api rootProject.ext.dependencies["gson"]

implementation ('cn.bmob.android:bmob-sdk:3.6.2') {

        exclude group: 'com.google.code.gson'

    }

我考虑来考虑去。。还以为bmob有啥黑科技。或者我依赖的底层框架有问题。(MVPArms)

然后我去除gradle中重复的gson依赖

代码修正提示Add library 。但这样选择后并没有解决问题。运行后依旧出现这个提示。

这时候我就很怀疑是不是没有真正的依赖上。

然后我修改了依赖api为


// api rootProject.ext.dependencies["gson"]

    api('cn.bmob.android:bmob-sdk:3.6.2') {

        exclude group: 'com.google.code.gson'

    }

问题迎刃而解。

所以问题的源头出在没有理解gradle的依赖指令上。

api 指令

跟2.x版本的 compile完全相同

implementation指令

只能在内部使用此模块,比如在一个libiary中使用implementation依赖了gson库,然后主项目依赖了libiary,那么,我的主项目就无法访问gson库中的方法,这样的好处是编译速度会加快。而我的app模块引用了底层模块,但底层模块使用implementation依赖了bmobsdk导致了错误。

上一篇下一篇

猜你喜欢

热点阅读