2017-04-26 61 views
1

我有一个Android应用程序,我想为不同的客户端定制,通常会更改颜色。来自相同代码库的移动应用程序克隆

我可以使用香料,但 的问题是,每一个应用程序应该有2个阶段(所以,2个应用程序为每个客户端),1 QA和1 PROD和他们使用不同的REST API网址,定制每个客户。

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

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

任何想法我可以做到这一点?

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

+0

尝试从启动屏幕加载时获取来自api的url。并使用它在应用程序 –

+0

@gdogaru您可以使用productFlavours与生成类型。 – Krish

+0

@DivyeshPate l不只需要api网址,我需要定义更多的属性,并且常见的api不是一个可行的解决方案 – gdogaru

回答

2

在我使用的项目中,使用产品风味构建类型。我会在这里解释一下。 我的项目是这样的,enter image description here

,并在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 
     } 

    } 
+0

这将工作,我看到的缺点是“minifyEnabled false”。为了创建发布版本,你需要有一个标志或修改构建文件 – gdogaru

+0

我不这么认为。你也可以添加一个发布版本,它会起作用。如果它帮助你,请接受我的回答 – Krish

+0

你解决了这个问题吗? – Krish

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 
相关问题