在多项目中处理(仅限)库中的资源(无依赖关系)

时间:2015-11-09 19:13:45

标签: android gradle android-gradle

我在Android Studio中有一个多项目部署,其中项目是库(主项目应用程序除外)。

结构是:

+ app
    + manifest
    + java
    + res
+ library 1
    + manifest
    + java
    + res
        + layout
        + values
        + xml
    + assets
+ library 2
    + ....

我需要配置build.gradle以在主应用程序的编译中包含库中的特定资源(如xml,字符串或字体)(在我的情况下,我有不同的风格)。

我可以为每种风格包含整个项目,但是没有必要将所有java文件包含在其他资源中,因为这些特定风格没有使用它们。但是,主应用程序仍需要使用字体和库中的一些strings.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

1 个答案:

答案 0 :(得分:0)

最好的方法是将库附加到风味中。但是使用这种方法你根本不能使用这个库。

myflavourCompile 'com.lib:libraryname:0.0.3'