如果模块化开发中遇到

多模块的AndroidManifest.xml没有合并
or
多模块的资源文件没有合并
or
模块A include了模块B,而无法使用模块B内依赖的其他aar包中的类的时候
or
提示Support包版本不一致
这篇文章可能就是你要的解决方案~

举个栗子:

比如我们现在有一个App模块设计为:
主工程: app
模块: ui , framework

引入模块的方式:在settings.gradle中,指定正确的模块路径

include \':app\', \':framework\', \':ui\'
project(\':framework\').projectDir = new File(\'../framework\')
project(\':ui\').projectDir = new File(\'../ui\')

如果现在framework引入了一些依赖库,假设如下:

// Retrofit 网络框架依赖
implementation "com.squareup.retrofit2:retrofit:2.5.0"

// Gson 依赖
implementation \'com.google.code.gson:gson:2.8.5\'

// ARouter解耦框架
implementation \'com.alibaba:arouter-api:1.4.1\'
annotationProcessor \'com.alibaba:arouter-compiler:1.2.2\'

如果这样写的话,主工程app中将无法调用到这些依赖库中的类。
因为implementation声明的依赖只能在本module模块内使用,跨module使用就要使用api声明(其实就是曾经的compile,但是如果设置成compile,AS又要给你叫叫叫)!!改成如下即可

// Retrofit 网络框架依赖
api "com.squareup.retrofit2:retrofit:2.5.0"

// Gson 依赖
api \'com.google.code.gson:gson:2.8.5\'

// ARouter解耦框架
api \'com.alibaba:arouter-api:1.4.1\'
annotationProcessor \'com.alibaba:arouter-compiler:1.2.2\'

同理,这是模块里引用别的aar,这样配置完了,那么紧接着需要在依赖framework的app模块中,
在build.gradle的依赖处加入对应的引入哈。

api project(":framework")

当然如果全部做完,由于很多aar里使用了不一样的support版本,一定会提示版本不兼容了(其他aar不兼容的解决方案一样哈),在主工程app的build.gradle中指定:

android {
    .....
    .....
//指定jdk版本
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    // 如果提示多个重复文件,加这属性
    packagingOptions {
        exclude \'META-INF/proguard/androidx-annotations.pro\'
    }
}

// 用于指定所有aar引用同样版本的support包
configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == \'com.android.support\') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion \'28.0.0\'
            }
        }
    }
}

 

————————————————
版权声明:本文为CSDN博主「胖虎」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ljphhj/article/details/86262031

版权声明:本文为fuyaozhishang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/fuyaozhishang/p/11888916.html