Gradle:如何将Java项目风格依赖资源包含到Android APK中?
我有一些仅限Resources的Java项目具有build.gradle: 和目录结构:Gradle:如何将Java项目风格依赖资源包含到Android APK中?,java,android,resources,dependencies,gradle,Java,Android,Resources,Dependencies,Gradle,我有一些仅限Resources的Java项目具有build.gradle: 和目录结构: flavor1/ src/ main/ resources/ assets/ file1.png flavor2/ src/ main/ resources/ assets/ file1.png android_project/ assets/ assets-flavor1/
flavor1/
src/
main/
resources/
assets/
file1.png
flavor2/
src/
main/
resources/
assets/
file1.png
android_project/
assets/
assets-flavor1/
assets-flavor2/
res/
res-flavor1/
res-flavor2/
src/
main/
java/
com/
...
还有另一个项目(这次是Android)和build.gradle:
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')
}
具有目录结构:
flavor1/
src/
main/
resources/
assets/
file1.png
flavor2/
src/
main/
resources/
assets/
file1.png
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项目资产中
您能帮助我吗?您能显式地将路径添加到Java项目资源文件夹吗
flavor1 {
res.srcDirs = ['res-flavor1']
assets.srcDirs = ['assets-flavor1', '$java-project-root/flavor1/src/main/resources/assets']
}
这并不理想,但应该可以使用。每种风格都会创建一个关联的依赖项配置对象,因此您可以执行以下操作:
dependencies {
flavor1Compile project(':flavor1')
flavor2Compile project(':flavor2')
}
这将在正确的变体中打包正确的资产。是的,请仔细查看我的问题。这确实适用于Java项目,但不适用于Android项目。也就是说,使用了项目依赖关系(源等),但资源文件不包括在生成的APK中。从另一个答案中,我推断您希望将它们作为资产而不是资源(您的问题不清楚)。是吗?是的,我认为在Android的情况下,它们是同义词。基于风格的依赖关系也适用于库项目吗?这确实有效!虽然必须使用相对或绝对路径,所以我编辑了你的文章。谢谢。嗯,不幸的是,这中断了对Android Studio和IntelliJ的导入,错误是:无法注册“SOURCE”类型的给定路径,因为它超出了内容根目录。有什么线索可以修复吗?安卓Studio 0.5已经修复了!万岁!