вкусы продуктов, наборы источников. За исключением файлов - android studio

У меня есть приложение с 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'

}

Я добавил исходные наборы для вкусов и добавил несколько файлов для каждого конкретного вкуса.

Кроме того, я хотел указать, какие файлы следует исключить во флейворе1 из основного исходного набора.

Файлы, которые следует исключить из основного исходного набора, находятся в main/java/com/example/testing/.

  • файл1.java
  • файл2.java
  • файл3.java
  • файл4.java

В каждом варианте я хотел бы исключить 1 файл из них. Но я хочу, чтобы во вкусе было все остальное. Пример:

фавор1 должен иметь: файл2, файл3, файл4.

falvor2 должен иметь: файл1, файл3, файл4.

и т. д.

Как вы можете видеть, файлы являются общими для большинства разновидностей, поэтому я не хочу помещать их все в разновидности, потому что это будет копия кода, и каждое изменение в каждом файле должно будет применяться ко всем различным файлам разновидностей.

Я видел это:

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

Но это не сработало бы для меня. Я не могу разобраться.

Спасибо }


comment
пытаясь до этого .. никто?   -  person Mumfordwiz    schedule 05.08.2016
comment
я сделаю это в последний раз .. Спасибо заранее   -  person Mumfordwiz    schedule 14.08.2016
comment
Я решил это, проверьте этот ответ как исключить папку res из вариантов сборки gradle"> stackoverflow.com/questions/33263567/   -  person lxknvlk    schedule 09.08.2017
comment
привет, я нашел решение здесь bulldogjob.com/articles/. я пробовал и у меня работает   -  person chrizonline    schedule 17.06.2019


Ответы (1)


Немного поздно, но может быть полезно для других пользователей.

Я думаю, что хорошей альтернативой является размещение всего вашего общего кода (или ресурсов) в одной или нескольких конкретных папках, скажем, sharedfoo, и использование gradle для добавления их в любых вариантах, которые в этом нуждаются.

productFlavors {
    flavor1 {
      applicationId "com.flavor1"
    }
    flavor2 {
      applicationId "com.flavor2"
    }
    flavor3 {
      applicationId "com.flavor3"
    }
    flavor4 {
      applicationId "com.flavor4"
    }
}
sourceSets {
    flavor1 { java.srcDirs = ['src/flavor1/java', 'src/sharedfoo/java'] }
    flavor2 { java.srcDirs = ['src/flavor2/java', 'src/sharedfoo/java'] }
}
person pauminku    schedule 10.08.2020