如何使用Android Studio在模块中添加口味?

如何使用Android Studio在模块中添加口味?,android,gradle,android-studio,android-gradle-plugin,build.gradle,Android,Gradle,Android Studio,Android Gradle Plugin,Build.gradle,我有一套使用相同模块的项目,其中包含几乎所有实际代码。项目的设置如下所示: project/ - app/ - build.gradle - libraries/ - module/ - build.gradle - build.gradle - settings.gradle 这些依赖项都设置正确,我可以构建和运行应用程序,但我只能为项目添加味道,这不是理想的解决方案。settings.gradle包含以下内容: include ':app', '

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

project/
  - app/
    - build.gradle
  - libraries/
    - module/
      - build.gradle
  - build.gradle
  - settings.gradle
这些依赖项都设置正确,我可以构建和运行应用程序,但我只能为项目添加味道,这不是理想的解决方案。settings.gradle包含以下内容:

include ':app', ':libraries:module'
在应用程序目录的build.gradle文件中,我添加了以下块:

productFlavors {
    alpha
    production
}
使用gradle 0.11,这将同步并创建assembleAlphaDebug、AssembleAlphaElease、assembleProductionDebug、assembleProductionRelease任务。当我尝试在模块中执行此操作时,会出现以下错误:

未找到与给定名称匹配的资源(位于值为“@style/MyCustomTheme”的“主题”)


在内置的
app/src/main/AndroidManifest.xml
中。由于某些原因,模块未生成,因此自定义主题无法工作。我做错了什么?

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

android {
    defaultPublishConfig "productionRelease"
    publishNonDefault true

    productFlavors {
        alpha {
        }
        production {
        }
    }
}
只有当有人希望依赖于除
productionRelease
变体之外的其他内容时,才需要
PublishNodefault
位。如果您首先在库中设置了多种口味,那么可能就是这种情况

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

dependencies {
    compile project(':module')
}
默认情况下,它将取决于
productionRelease
变量。如果您希望依赖非默认变量:

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

根据我的理解,即使是应用程序也是一个和你们“模块”相同的模块,在任何模块中加入口味都可以。编译代码时出现了什么错误。@pyus13进一步看,这个错误似乎是因为找不到给定风格的资源。我在应用程序的清单中设置了自定义主题,但我没有找到与给定名称匹配的资源(在“主题”处,值为“@style/MyCustomTheme”)。您的模块是一个库项目。意味着它有“安卓库”或“安卓”作为插件?@pyus13它使用安卓库插件。正如安卓工作室团队负责人所评论的,这里的库不支持口味。有可能只依赖于味道而不依赖于构建类型吗?我想您指的是
编译项目(
这篇文章帮了我很大的忙。到目前为止,我已经为此花费了大量的时间。我现在注意到的一件事是,defaultPublishConfig中指定的构建模式是现在唯一可以从android studio中构建的。还有其他人经历过吗?刚刚得到我想要的:)谢谢:)