1

4 つの製品フレーバーを持つアプリがあります。は次のbuild.gradleようになります。

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"
defaultConfig {
    applicationId "com.example.testing"
    minSdkVersion 23
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
productFlavors {
    flavor1 {
        applicationId "com.flavor1"
    }
    flavor2 {
        applicationId "com.flavor2"
    }
    flavor3 {
        applicationId "com.flavor3"
    }
    flavor4 {
        applicationId "com.flavor4"
    }
}
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'

}

フレーバーのソースセットを追加し、特定のフレーバーごとにいくつかのファイルを追加しました。

さらに、flavor1 でメインの sourceSet から除外するファイルを指定したいと考えました。

メインのsourceSetで除外するファイルmain/java/com/example/testing/はそこにあります

  • file1.java
  • file2.java
  • file3.java
  • file4.java

各フレーバーで、これらから 1 つのファイルを除外したいと思います。しかし、私はフレーバーが残りのすべてを持っていることを望んでいます。例:

フレーバー 1 には、file2、file3、file4 が含まれている必要があります。

falvor2 には、file1、file3、file4 が必要です。

ご覧のとおり、ファイルはほとんどのフレーバーで共有されているため、それらすべてをフレーバーに入れたくありません。コードのレプリカになり、すべてのファイルのすべての変更をすべての異なるフレーバー ファイルに適用する必要があるからです。

私はこれを見ました:

sourceSets {
    flavor1 {
        java {
            srcdir 'testing'
            exclude '/file1'
        }
    }

しかし、それは私にはうまくいきません。私はそれを把握することはできません。

ありがとう }

4

1 に答える 1