2017-04-26 12 views
1

私は、さまざまなクライアント向けにカスタマイズしたいアンドロイドアプリを持っています。同じコードベースのモバイルアプリクローン

私はフレーバーを使うことができましたが、問題は、すべてのアプリが2段階(つまり各クライアントに2つのアプリ)、1つがQA、1がProdで、それぞれ別の残りのAPIのURLを使用することですクライアント。

私にとって理にかなっているのは、フレーバーをネストする方法です。それぞれのプロパティを定義できますが、サポートされていません。これにより、client_1のいくつかのレイアウトを変更し、残りの部分をメインから使用することもできます。例:

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

どのように私はそれを達成することができますか?

もう1つの選択肢は、共通のライブラリアプリを持ち、異なるクライアントにそれぞれの設定で異なるアプリを持たせることですが、それによって複雑になります。

+0

をするときスプラッシュ画面が読み込まれると、APIからURLを取得してみてください。アプリで使用する –

+0

@gdogaruビルドタイプでproductFlavoursを使用できます。 – Krish

+0

@DivyeshPate私はAPIのURLを必要としているだけではなく、定義されたプロパティがさらに必要であり、共通のAPIは実現可能なソリューションではありません。 – gdogaru

答えて

2

私が使用したプロジェクトでは、製品の味を持つタイプを作成しました。ここで説明します。 私のプロジェクトではなく、あなたが味を定義することができます味の多くを作成するので、

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

アプリが複数の基準に基づいてenter image description here

とGradleのファイルにこの行を追加し、次のようになります寸法。

フレーバーのディメンションは、バリアントを生成するために使用されるデカルト積を定義します。

例:

flavorDimensions("dimA", "dimB") 

productFlavors { 

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

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

この設定は、(:debugreleaseあなたが2つの標準ビルドの種類を持っている場合)、18(3 * 3 * 2)の変異体を生成します。 バリアントを構築し、次が作成されます。

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 
関連する問題