美文网首页
Android Studio 3.0.1的依赖方式

Android Studio 3.0.1的依赖方式

作者: 富爸爸之父 | 来源:发表于2018-03-29 09:42 被阅读0次

    Before 3.0之前的依赖方式

    provided:只在编译时使用,module只参与编译,不会打包到apk

    compile :依赖module参与编译并且打包到最终的 apk 文件中

    apk:只会打包到 apk 文件中,而不参与编译,所以不能再代码中直接调用 jar 中的类或方法,否则在编译时会报错

    After 3.0 的依赖方式

    api : module 编译时可用,module 的使用者编译和运行时可用,这个和过时的 compile 一样的。

    implementation : module 编译时可用,module 的使用者运行时可用,对于大量使用 library 的项目,可以显著提高编译时间,因为它可以减少构建系统重新编译一些 module 。

    那么什么时候用 api ,什么时候用 implementation 呢?由于公司项目采用的是组件化开发,有个 common module 需要被各个组件依赖,一开始采用的是 implementation ,结果发现会导致别的组件无法引用 common 中的库( common -> A module ,A module 无法引用 common 依赖的库 )。

    试验过后得出结论,当这个 module 会被多次引用应该使用 api,不会被别的 module 引用使用 implementation 。

    ompileOnly :替换了 provided

    runtimeOnly: 替换了 apk

    案例:引用framework.jar后报的错

    参考https://www.jianshu.com/p/a25a85b6372d做的引用

    由于没理解3.0.1的依赖关系的区别,默认 implementation依赖framework.jar,导致编译出错

    com.android.builder.dexing.Dex Archive Merger Exception: Unable to merge dex

    这类问题一般都是重复依赖导致,随后改了依赖方式为ompileOnly

    相关文章

      网友评论

          本文标题:Android Studio 3.0.1的依赖方式

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