【问题标题】:How to create flavors for few apps in one project如何在一个项目中为少数应用创建风味
【发布时间】:2015-03-16 08:16:46
【问题描述】:

我的项目风格配置有问题。

我想这样定义项目结构:

三个应用程序(功能非常相似),每个都有免费和专业版,这意味着将有 6 个应用程序版本: - A(专业版,免费) - B(专业版,免费) - C(专业版,免费)。

例如,现在我构建项目 B(免费版)并将资源与 B(专业版)合并。当 B(免费版)的资源丢失时,从 pro 版中获取它,然后当它也丢失时,从 main 获取默认资源。

重要的是每个版本,例如 A(免费)和 A(专业)都有一些不同的资源(例如:应用程序图标、徽标等)

其实我有这样的东西,但它并没有像我想要的那样工作。

    productFlavors {
    aPro {
        applicationId "com.example.apro"
    }

    aFree {
        applicationId "com.example.afree"
    }

    bPro {
        applicationId "com.example.bpro"
    }

    bFree {
        applicationId "com.example.bfree"
    }

    cPro {
        applicationId "com.example.cpro"
    }

    cFree {
        applicationId "com.example.cfree"
    }
}

【问题讨论】:

    标签: android gradle android-productflavors


    【解决方案1】:

    您在build.gradle 文件中所做的操作是正确的。除了 gradle 文件中的 gradle 配置,您还需要在 app/src 文件夹下添加文件夹。所以项目结构是这样的:

      Project
    |---- app
    |     |---- build
    |     |---- libs
    |     |---- src
    |           |---- aPro
    |           |---- aFree
    |           |---- bPro
    |           |---- bFree
    |           |---- cPro
    |           |---- cFree
    |           |---- main
    

    在主文件夹下,有您的主要代码,例如功能、方法、资源。

    productFlavorName文件夹下,可以添加资源文件夹,添加应用图标、logo等。

    然后,在 Android Studio 中,打开Build Variants 选项卡(在 Android Studio 的左侧栏中,垂直),选择一个Build Variant 进行调试。

    更多详情请见this official document

    【讨论】:

    • 我知道如何创建一个像你这样的结构,它会起作用,但不是我想要的方式。您的解决方案将导致一些在免费版和专业版中相同的资源重复,例如字符串或 ui 图形。这不是正确的方式。
    • @Skalaw 您应该将重复的资源移动到main 文件夹
    • 因此,如果我在一个项目中有这 3 个应用程序(6 个版本),例如 aPro 和 aFree 在 colors.xml 中具有相同的 ui“primary_color”,但 bPro 和 bFree 具有不同的颜色。所以我应该将相同的 colors.xml 文件放到 aPro 和 aFree 资源文件夹中,或者有一种方法可以在一个应用的这两个版本之间合并 colors.xml?
    • @Skalaw 您应该将相同的颜色放在main/res/values 文件夹中的一个color.xml 文件中,将不同的颜色分别放在变量资源文件夹下的color.xml 文件中。
    • 好的,我明白这一点,但是有没有办法读取这样的资源:aFree/res -> aPro/res -> main/res/... 我只想再设置一个默认值aFree 和主要资源之间的文件夹。它会给我一个解决方案,不要在两个模块中重复相同的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 2021-01-08
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多