android studio 不同module资源重名引起引用混乱怎么解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android studio 不同module资源重名引起引用混乱怎么解决?相关的知识,希望对你有一定的参考价值。

android studio
工程 A中 引入一个Module B 作为lib,
B里面使用的资源文件部分和A中的资源文件重名,
编译工程发现B编译时对于重名资源加载了A里面的资源文件,没有加载自己的资源文件。
请问如何设置可以让让B优先加载自己的资源文件?

参考技术A 方法一:
通过gradle配置

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

方式二:
右键module选择open module setting,选择要修改的module名,切换到dependencies页面,将要修改的jar的scope修改provided模式。

Android studio Gradle配置通用配置

 在使用Android studio  Android开发中Gradle通常会遇到很多相同的配置例如在不同的module中都要配置相同的compileSdkVersion、buildToolsVersion等

这时我们可以定义一个共享变量统一他们的配置,防止不同module因为配置不同而导致的一些兼容性问题,或一些其他bug

一、定义共享变量

在工程根目录创建一个名为common_config.gradle的文件

文件内容举例

project.ext{
    //java相关
    java_version=8
    java_max_heap_size=4G

    //JDK版本兼容
    source_compatibility = this.&getJavaVersion()
    target_compatibility = this.&getJavaVersion()

    //kotlin 版本‘
    kotlin_version = ‘1.3.41‘

    //Android编译相关版本
    compile_sdk_version =28
    build_tools_version =‘28.0.3‘
    min_sdk_version= 16
    target_sdk_version =29

    //混淆相关
    minify_enabled =false
}
def getJavaVersion(){
    switch (project.ext.java_version){

        case "6":
            return JavaVersion.VERSION_1_6
        case "7":
            return JavaVersion.VERSION_1_7
        case "8":
            return JavaVersion.VERSION_1_8
    }
}

二、引入通用配置

apply from:"${project.rootDir}/common_config.gradle"

示例:

buildscript {
    //引入通用配置
   apply from:"${project.rootDir}/common_config.gradle"

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath ‘com.android.tools.build:gradle:3.5.0‘
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        //small 插件框架
     //   classpath ‘net.wequick.tools.build:gradle-small:1.1.0-alpha2‘
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

    }

}
......

三、在Module中使用这个通用配置

示例:

  compileSdkVersion compile_sdk_version
    buildToolsVersion build_tools_version
    defaultConfig {
        applicationId "com.jelly.smalldemo"
        minSdkVersion minSdkVersion
        targetSdkVersion targetSdkVersion
        versionCode 1
        versionName "1.0.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        applicationIdSuffix =kotlin_version
    }
    buildTypes {
        release {
            minifyEnabled minify_enabled
            proguardFiles getDefaultProguardFile(‘proguard-android-optimize.txt‘), ‘proguard-rules.pro‘
        }
    }

 

以上是关于android studio 不同module资源重名引起引用混乱怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章

在 Android Studio 和 Gradle 的 Android App Module 中使用不同构建类型的 Library Module

Android Studio中的Module是指啥

Android Studio3.0 引用Module的本质和共享Module给其他Module

Android studio Gradle配置通用配置

android studio生成aar包并在其他工程引用aar包

android studio的module越多编译越慢吗