我在Android Studio中有一个多项目部署,其中项目是库(主项目应用程序除外)。
结构如下:
+ app
+ manifest
+ java
+ res
+ library 1
+ manifest
+ java
+ res
+ layout
+ values
+ xml
+ assets
+ library 2
+ ....
我需要配置build.gradle以在主应用程序的编译中包含来自库的特定资源(如xml,字符串或字体)(在我的情况下,我有不同的口味)。
我可以为每种口味包含整个项目,但是没有必要将所有java文件包含其他资源,因为此特定口味没有使用它们。但是,主应用仍将需要使用字体和库中的某些string.xml,字体或xml图标。
将在build.gradle的 flavor 描述中添加哪些指令以包括(仅)来自库(而不是整个库)的这些特定资源?
更新
我试图通过将以下内容添加到build.gradle中,将这些资源包括在sourceSets中:
sourceSets {
main.resources.srcDirs += '/home/username/AndroidStudioProjects/Lib1/lib1/src/main/res/values'
main.resources.srcDirs += new File("/home/username/AndroidStudioProjects/Lib1/lib1/src/main/res/values").absolutePath
main.resources.srcDirs += new File('/home/username/AndroidStudioProjects/Lib1/lib1/src/main/res/values').absolutePath
main.resources.srcDirs += new File(new URI("file:///home/username/AndroidStudioProjects/Lib1/lib1/src/main/res/values")).absolutePath
main.resources.srcDirs += '../../Lib1/lib1/src/main/resources/values'
main.resources.srcDirs += '../../Lib1/lib1/src/main/res/values'
main.resources.srcDirs += '../../Lib1/lib1/src/main/resources/xml'
main.resources.srcDirs += '../../Lib1/lib1/src/main/assets'
main.resources.srcDirs += 'project(Lib1).sourceSets.main.srcDirs'
main.resources.srcDirs += 'project(:Lib1).sourceSets.main.srcDirs'
main.resources.srcDirs += 'project(:..:Lib1).sourceSets.main.srcDirs'
}
这些组合中的某些组合有望奏效,但我看不到中间体或生成的文件夹中的lib资源有任何更新。
更新:由于没有针对此问题的明确答案,我在gradle的论坛中打开了一个错误请求。跟随这里:https://discuss.gradle.org/t/sourcesets-for-paths-not-belonging-to-projects-added-as-dependencies/12720/2
最佳答案
最好的方法是将库添加到 flavor 中。但是使用这种方法,您根本无法使用这种库。
myflavourCompile 'com.lib:libraryname:0.0.3'
关于android - 在多项目中处理(仅)库中的资源(无依赖项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33616448/