Android中gradle的implementation和ap

作者: hongjay | 来源:发表于2018-06-04 23:56 被阅读5次

    众所周知。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导致了错误。

    相关文章

      网友评论

        本文标题:Android中gradle的implementation和ap

        本文链接:https://www.haomeiwen.com/subject/dvpusftx.html