2017-01-25 6 views
2

複数の製品のフレーバを持つようにプロジェクトを構成しました。私は、ファイル(任意のファイル:Javaの、リソース、...)を作成した場合ビルドタイプ固有のフォルダが製品フレーバで認識されない

android { 
    // Rest of the configuration omitted for clarity 
    buildTypes { 
     debug { 
      // ... 
     } 

     release { 
      // ... 
     } 
    } 

    productFlavors { 
     paid 
     free 
    } 
} 

:I私のモジュールbuild.gradleに次のコードを持って、paidfreedebugまたはreleaseで、それはアンドロイドで認識されていますスタジオと私は私のプロジェクトでそれを使用することができます。

ただし、同じファイルがpaidDebug(または類似のフォルダ)に作成されている場合、Android Studioでは認識されません。これを動作させるために追加の設定が必要ですか?これはまだサポートされていませんか?同じ名前を持つ

+0

どこでpayDebugフォルダを配置しましたか? –

+0

これは 'app/src/paidDebug/{java、res}'にあります。'paidDebug'を' paid'に置き換えると、期待どおりに動作します。 –

+0

メインツリーに対応するソース/リソースファイルがありますか? –

答えて

0
  1. ソースコードファイルが(ただし、「メイン」に)代替ソースセットの全てに配置する必要があります。

    次のいずれかの

    アプリ/ SRC/無料 /java/com/domain/myapp/MainActivity.java
    アプリ/ SRC/ /java/com/domain/myapp/MainActivity.javaを支払いました

    または:

    アプリ/ SRC/freeDebug /java/com/domain/myapp/MainActivity.java
    アプリ/ SRC/freeRelease /java/com/domain/myapp/MainActivity.java
    アプリ/ SRC/paidDebug /java/com/domain/myapp/MainActivity.java
    アプリ/ SRC/paidRelease/javaの/ COM /同じ名前のドメイン/ myappに/ MainActivity.java

  2. リソースファイルを含め、すべてのソースセットに配置することができます「メイン」。

    APP/SRC/ /res/layout/activity_main.xml
    APP/SRC/paidDebug /res/layout/activity_main.xml
    APP/SRC/paidRelease/RES /レイアウト/ activity_main.xml

    この場合、「フリー」フレーバーを作成するときに、「メイン」セットのレイアウトファイルが使用されます。しかし、「支払われた」味の構築中に、特定のバージョンのレイアウトが使用されます。

0

build.gradleファイルに特定のソースディレクトリを指定できます。例えば、Androidの統合テストソースにユニットテストのソースとtestFreeにtestFreeReleaseを追加します。これもKotlinのために働く

android { 
    [...] 
    sourceSets { 
     main.java.srcDirs += 'src/main/java' 
     testFreeRelease.java.srcDirs += 'src/testFreeRelease/java' 
     androidTestFree.java.srcDirs += 'src/androidTestFree/java' 
    } 
} 

を。ちょうどkotlinでjavaを切り替えてください。

関連する問題