我有一些仅使用build.gradle的resouces-Java项目:
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'eclipse'
和目录结构:
flavor1/
src/
main/
resources/
assets/
file1.png
flavor2/
src/
main/
resources/
assets/
file1.png
和另一个带有build.gradle的项目(这次是Android):
android {
compileSdkVersion 19
buildToolsVersion "19"
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
}
productFlavors {
flavor1 {
packageName "com.mydomain.flavor1"
}
flavor2 {
packageName "com.mydomain.flavor2"
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
res.srcDirs = ['res']
assets.srcDirs = ['assets']
java.srcDirs = ['src/main/java']
}
flavor1 {
res.srcDirs = ['res-flavor1']
assets.srcDirs = ['assets-flavor1']
}
flavor2 {
res.srcDirs = ['res-flavor1']
assets.srcDirs = ['assets-flavor2']
}
}
}
dependencies {
flavor1Compile project(':flavor1')
flavor2Compile project(':flavor2')
}
目录结构:
android_project/
assets/
assets-flavor1/
assets-flavor2/
res/
res-flavor1/
res-flavor2/
src/
main/
java/
com/
...
问题是来自普通Java项目的资源:flavor1和:flavor2未包含在结果APK中。如果我将它们包含为全局依赖项:
dependencies {
compile project(:flavor1)
}
它们包含在APK中。
这些普通Java项目的原因是它们是Android项目风格和其他项目(iOS,HTML,Java,问题中没有描述)的资源,所以我不能将它们直接包含在Android项目资产中
你能帮帮我吗?
答案 0 :(得分:2)
您可以显式添加Java项目资源文件夹的路径吗?
flavor1 {
res.srcDirs = ['res-flavor1']
assets.srcDirs = ['assets-flavor1', '$java-project-root/flavor1/src/main/resources/assets']
}
这不太理想,但应该有效。
答案 1 :(得分:1)
每个flavor都会创建一个关联的依赖项配置对象,因此您可以执行以下操作:
dependencies {
flavor1Compile project(':flavor1')
flavor2Compile project(':flavor2')
}
这会将正确的资产打包成正确的变体。