【发布时间】:2014-06-07 05:58:10
【问题描述】:
已经有几个问题(different icons which didn't work 和different names which did work),但这些问题的答案还不足以让我的应用程序按照我需要的方式运行。我是 Gradle 的新手,昨天才开始转换,但有几件事我无法弄清楚。
我有 3 个以上的应用程序使用相同的代码库,每个应用程序都使用不同的应用程序启动器图标和名称、URL,但现在我无法为每个应用程序使用不同的图标和应用程序名称。在添加 sourceSets 之前,我的 appName 和其他自定义字符串有效,但图标无效,现在没有任何效果。
在我的 src 目录中,我有 4 个目录:flav1、flav2、flav3 和 main(包含我所有的核心代码和默认资源)。 Android Studio 在每个flav 的末尾添加了.res。每个目录都有一个drawable 和values 目录,里面分别有自定义的strings.xml 和icon.png。如果drawable应该有一个特定的名称,我不知道:drawable、drawable-mdpi等。如果只是我决定的,我想要drawable。
我没有收到任何错误,只是在main 中定义的默认字符串和默认图标 Android Studio,除了我在main 中的默认 AndroidManifest.xml 将不再识别我的图标和它们。
这是我的 build.gradle:
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion '19.0.2'
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
flav1 {
packageName "com.example.flav1"
versionCode 32
versionName "1.0.5"
}
flav2 {
packageName "com.example.flav2"
versionCode 33
versionName "1.0.6"
}
flav3 {
packageName "com.example.flav3"
versionCode 27
versionName "1.0.0"
}
}
sourceSets {
main {
// I don't understand how these are supposed to work
java.srcDirs = ['java']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
// res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
flav1 {
// I can't figure out the path to these
res.srcDirs = ['res', '/flav1']
}
flav2 {
res.srcDirs = ['res', '/flav2']
}
flav3 {
res.srcDirs = ['res', '/flav3']
}
}
// I read that these are necessary, but I don't know how to use them
sourceSets.flav1 {
res {
srcDir 'flav1'
}
resources {
srcDir 'flav1'
}
}
sourceSets.flav2 {
res {
srcDir 'flav2'
}
resources {
srcDir 'flav2'
}
}
sourceSets.flav3 {
res {
srcDir 'flav3'
}
resources {
srcDir 'flav3'
}
}
}
dependencies {
// code
}
感谢您的帮助!
【问题讨论】:
标签: java android android-gradle-plugin