我在同一代码库中有两个应用程序。他们使用相同的java文件并保存res文件,除了值和可绘制文件夹,它们具有相同的文件但文件名不同但内容不同。Android Flavors - 无法解析符号R
我遇到的问题是,当我的摇篮建立,我有一个问题,因为到处都是,我使用RI有错误
Cannot resolve symbol R
我的build.gradle文件看起来像这样(与简洁留下了几个设置):
android {
signingConfigs {
// left out
}
compileSdkVersion 23
buildToolsVersion "23.0.1"
useLibrary 'org.apache.http.legacy'
lintOptions {
disable "ResourceType"
}
defaultConfig {
applicationId = "com.au.testapp"
minSdkVersion 16
targetSdkVersion 23
versionCode = 1
buildConfigField 'String', 'app_ver_numb', '"1.00"'
multiDexEnabled = true
}
sourceSets {
main {
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
assets.srcDirs = ['assets']
res.srcDirs = ['res/main']
manifest.srcFile 'AndroidManifest.xml'
}
flavorone{
res.srcDirs = ['res/flavorone']
}
flavortwo{
res.srcDirs = ['res/flavortwo']
}
instrumentTest.setRoot('tests')
}
productFlavors {
flavorone {
applicationId "com.au.testapp.flavorone"
versionName = "''"
buildConfigField 'String', 'app_id', '"79"'
}
flavortwo {
applicationId "com.au.testapp.flavortwo"
versionName = "''"
buildConfigField 'String', 'app_id', '"79"'
}
}
buildTypes {
debug {
productFlavors.flavorone.signingConfig signingConfigs.flavorone
productFlavors.flavortwosigningConfig signingConfigs.flavortwo
}
release {
productFlavors.flavorone.signingConfig signingConfigs.flavorone
productFlavors.flavortwo.signingConfig signingConfigs.flavortwo
minifyEnabled true
shrinkResources true
proguardFile getDefaultProguardFile('proguard-android.txt')
}
}
}
我的文件夹结构如下所示:
src
com
au
testapp
adapter
utils
db
common
...
res
main
anim
animator
...
drawable
layout
values
...
flavorone
drawable
values
flavortwo
drawable
values
当我在Gradle中构建它时,我没有收到任何错误,但是当我构建项目时,我的java文件通过它们都有错误,因为它们找不到R ..我猜这是与由于我的构建风格设置,包名称不正确。
任何想法?
我会给你一个去,并尽快回复您nitpicker!感谢您的帮助至今:) – Nickmccomb
没问题。我更多关注了你的问题,我认为在移动flavor资源之后,你还必须将res/main中的内容放到res中。 (之后不要忘记更新build.gradle)。此外,你将不得不将你的基本应用程序的Java文件(你在src中的文件)移动到src/main/java中。这个SO贴子比我解释如何构建您的文件的风味更好的工作:http://stackoverflow.com/a/20345749/6526330 –
啊现在它是有道理的!这是我第一天的口味,所以我仍然习惯于应该如何设置。我现在走在正确的轨道上,感谢您的帮助! – Nickmccomb