android - 如何使用 Android Studio 在模块中添加 flavor ?

标签 android gradle android-studio android-gradle-plugin build.gradle

我有一套使用相同模块的项目,其中几乎包含所有实际代码。该项目的设置如下:

project/
  - app/
    - build.gradle
  - libraries/
    - module/
      - build.gradle
  - build.gradle
  - settings.gradle

所有依赖项都设置正确,我可以很好地构建和运行应用程序,但是我只能为项目添加 flavor ,这不是理想的解决方案。 settings.gradle 包含以下内容:

include ':app', ':libraries:module'

在 app 目录的 build.gradle 文件中,我添加了以下代码块:

productFlavors {
    alpha
    production
}

使用 gradle 0.11,这会同步并创建 assembleAlphaDebugassembleAlphaReleaseassembleProductionDebugassembleProductionRelease 任务。当我尝试在模块中执行此操作时,我收到错误:

No resource found that matches the given name (at 'theme' with value '@style/MyCustomTheme')

在内置的 app/src/main/AndroidManifest.xml 中。由于某种原因,模块没有被构建,所以自定义主题不起作用。我做错了什么?

最佳答案

在库模块的 build.gradle 中,您需要几行额外的行来告诉它导出 flavor 以及在从另一个模块包含时如果未指定默认使用哪个构建变体:

android {
    defaultPublishConfig "productionRelease"
    publishNonDefault true

    productFlavors {
        alpha {
        }
        production {
        }
    }
}

publishNonDefault 位仅在有人想要依赖 productionRelease 变体以外的其他东西时才是必需的。如果您首先在库中设置了多种口味,大概就是这种情况。

现在,如果您通过 this 在其 build.gradle 中添加来自另一个模块的依赖项:

dependencies {
    compile project(':module')
}

默认情况下它将取决于 productionRelease 变体。如果您想依赖非默认变体:

dependencies {
    compile project(path: ':module', configuration:'alphaDebug')
}

关于android - 如何使用 Android Studio 在模块中添加 flavor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24307596/

相关文章:

java - Android:随机播放变量和多个 setText

java - Android 中的内存游戏从表面 View 延伸

android - 非法类文件 : Class module-info is missing a super type. 类文件版本 53

android - 在 android 库模块中调用 Activity

android - 在布局绑定(bind)中使用属性资源 (?attr/)?

android - 在android中创建自定义后退按钮

gradle - libgdx一段时间后无法加载纹理

Docker - 当应用程序尚未在本地构建时复制失败?

android - 下载适用于型号为 GT-P51110 的三星平板电脑的 OEM USB 驱动程序

java - 导入 NotNull 或 Nullable 并且 Android Studio 不会编译