我正在使用一个包含大量遗留代码的项目。我需要将“旧代码”与新代码分开。所以我创建了以下目录:
-ProjectRoot
-app
-src
-main
-java
-java_legacy
-res
-res_legacy
并将以下块添加到我的build.gradle
:
android {
.....
sourceSets {
main.java.srcDirs += 'src/main/java_legacy'
main.res.srcDirs += 'src/main/res_legacy'
}
}
但是当我尝试运行应用程序时,我收到错误:
error: cannot find symbol variable BuildConfig
显示错误的文件似乎是随机的,不使用也不导入类BuildConfig。
如果我清空生成错误的文件中的代码,它会出现在另一个(伪随机)文件中。
我该如何解决这个问题?
注意:我试过,"Build/CleanProject"
,"File/ Invalidate Caches / Restart ..."
,'同步gradle build',但错误仍然存在
答案 0 :(得分:1)
这可能会帮助那些浪费几个小时解决类似问题的人。搜索BuildConfig的出现次数并查看是否已导入正确的BuildConfig。奇怪的是,编译器没有捕获明显错误的导入,但指向一个随机的代码行。
答案 1 :(得分:0)
作为建议,请尝试:
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java', 'src/main/java_legacy']
res.srcDirs = ['src/main/res', 'src/main/res_legacy']
}
}
答案 2 :(得分:0)
Clicke同步,在gradle sync后保存的右侧
答案 3 :(得分:0)
我遇到了这个问题,事实证明我在src/main/java/com/<app name>
中有两个目录 - 一个是旧的,与捆绑ID不匹配。删除这个解决了我的问题。