android - 在多项目中处理(仅)库中的资源(无依赖项)

标签 android gradle android-gradle-plugin

我在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/

相关文章:

java - 一次获取文件的一部分作为 byte[]

android - Intellij 安卓项目。 Gradle 5.2.1。原因 : java. util.ConcurrentModificationException

gradle - Gradle: native 构建(cpp插件)的任务结构是什么?

java - Activiti + Spring Boot + Gradle 构建挂起,而 gradle clean 测试

android - 将 SonarQube 与 android 项目集成的问题

java - 如何在另一个应用程序模块中使用项目源代码

android - 如何使用 viewpager 和 fragment 将适配器设置为我的 ListView

local.properties 中的 Gradle 属性

Android Wear 仅适用于已签名的 .apk

java - 在Android上执行长CPU进程时渲染opengl es