提问者:小点点

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


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

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

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

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

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

productFlavors {
    alpha
    production
}

使用gradle 0.11,它同步并创建assembleAlphaDebug、assembleAlphaRelease、assembleProductionDebug、assembleProductionRelease任务。当我尝试在模块中执行此操作时,我收到错误:

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

在构建的app/src/main/AndroidManifest. xml中。由于某种原因,模块没有构建,因此自定义主题无法工作。我做错了什么?


共2个答案

匿名用户

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

android {
    defaultPublishConfig "productionRelease"
    publishNonDefault true

    productFlavors {
        alpha {
        }
        production {
        }
    }
}

只有当有人想要依赖productionRelease变体以外的东西时,才需要发布NonDefault位。如果您首先在库中设置了多种风格,大概就是这种情况。

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

dependencies {
    compile project(':module')
}

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

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

匿名用户

  1. 首先将下面的gradle代码片段添加到您的app/build. gradle
flavorDimensions "env"
productFlavors {
    dev {
        dimension "env"
    }
    pre {
        dimension "env"
    }
    prod {
        dimension "env"
    }
}
flavorDimensions "env"
productFlavors {
    register("dev")
    register("pre")
    register("prod")
}

我已经在这个使用不同的库模块为每个android风格发布了一个ansower