【问题标题】:Mobile app clones from same codebase来自同一代码库的移动应用程序克隆
【发布时间】:2017-09-23 16:09:06
【问题描述】:

我有一个安卓应用,我想为不同的客户定制,通常会改变颜色。

我可以使用口味,但是 问题是每个应用程序都应该有 2 个阶段(因此,每个客户端有 2 个应用程序),1 个用于 QA,1 个用于 Prod,并且它们使用不同的 rest-api url,为每个客户端自定义。

对我来说最理想的是一种嵌套风味的方法,这样我就可以为每个风味定义属性,但它不受支持。这也将允许我修改 client_1 的一些布局并使用 main 中的其余部分,我也需要这样做。示例:

 productFlavors {
    client_1 {
        dev {
            buildConfigField "String", "API_URL", "https://...."
        }
        prod {
            buildConfigField "String", "API_URL", "https://...."
        }
    }
    client_2 {
        dev { //...
        }
        prod {
            //...
        }
    }
}

知道如何实现吗?

另一种选择是拥有一个通用的库应用程序,并为不同的客户提供不同的应用程序及其配置,但这会使其更加复杂。

【问题讨论】:

  • 在启动画面加载时尝试从 api 获取 url。并在应用中使用
  • @gdogaru 您可以将 productFlavours 与构建类型一起使用。
  • @DivyeshPate l 不仅需要 api url,我还需要定义更多属性,而通用 api 不是可行的解决方案
  • @Krish 与构建类型我可以为所有具有该构建类型的人定义相同的属性,我需要单独的属性用于风味-构建类型组合
  • @gdogaru 你检查我的答案了吗?

标签: android gradle android-gradle-plugin android-productflavors


【解决方案1】:

在我使用的项目中,构建具有产品风格的类型。我会在这里解释。 我的项目是这样的,

并在 gradle 文件中添加这一行,

buildTypes {
        prod {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

        dev {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


    productFlavors {

        client_1 {
            applicationId "com.example.client_1"
            versionCode 1
        }

        client_2 {
            applicationId "com.example.client_2"
            versionCode 1
        }

    }

【讨论】:

  • 这会起作用,我看到的缺点是“minifyEnabled false”。为了创建发布版本,您需要有一个标志或修改构建文件
  • 我不这么认为。您还可以添加发布构建类型,它会起作用。如果对你有帮助,请采纳我的回答
【解决方案2】:

当应用基于多个标准时,您可以定义风味维度,而不是创建大量风味。

风味维度定义将用于产生变体的笛卡尔积。

例子:

flavorDimensions("dimA", "dimB")

productFlavors {

    row1 {
        ...
        dimension = "dimA"
    }
    row2 {
        ...
        dimension = "dimA"
    }
    row3 {
         ...
        dimension = "dimA"
    }

    col1 {
        ...
        dimension = "dimB"
    }
    col2 {
        ...
        dimension = "dimB"
    }
    col3 {
         ...
        dimension = "dimB"
    }
}

此配置将生成 18 (3*3*2) 个变体(如果您有 2 种标准构建类型:debugrelease)。 将创建以下构建变体:

row1-col1-debug 
row1-col2-debug 
row1-col3-debug 
row1-col1-release
row1-col2-release
row1-col3-release

row2-col1-debug 
row2-col2-debug 
row2-col3-debug 
row2-col1-release
row2-col2-release
row2-col3-release

row3-col1-debug 
row3-col2-debug 
row3-col3-debug 
row3-col1-release
row3-col2-release
row3-col3-release

【讨论】:

    猜你喜欢
    • 2012-02-15
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多