开发中遇到一个问题。导入的Module中,我修改了包名导致Moudule下引用的R文件无法生成新的。比如原来的包名是com.a.b。文件中引用的R文件就是com.a.b.R,修改后包名变成com.c.b,文件中的R文件的路径自动修改成了com.c.b.R。
第一反应就是修改Module下的清单文件中的packname,但是已经自动修改过了,无论怎么clean项目,rebuild项目都不行,手动删除项目里的build文件夹下的文件,然后再rebuild项目也不行。反而原来的com.a.b.R是可以访问到的。
解决方案:
在Moudle级的build.gradle文件中添加包名的声明,此处的声明的级别是高于清单文件的,添加完以后sync now。
android {
compileSdkVersion 31
defaultConfig {
applicationId "com.c.b" //修改后的包名。原来是com.a.b
minSdkVersion 23
targetSdkVersion 31
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}
然后Moudule中的新的R文件就生成了。
但是作为lib引入的Module在程序编译的时候是不允许在这里声明applicationId的,所以在生成新的R文件之后需要再把这行代码删除掉。然后主程序就可以正常build了。