Gradle - выполнить только один тип сборки
У меня есть несколько типов сборки, определенных в моем build.gradle. В окне вариантов я выбрал вариант сборки (ex debugAPI23). Я ожидал, что код только в одном типе сборки будет выполнен. Но в Gradle Console я вижу вывод для всех типов сборки.
Как видите, я пытаюсь удалить конкретный файл для каждого типа сборки. Но каждый раз все типы сборки выполняются. Так что в итоге мне не хватает файла, который должен присутствовать для моего выбранного типа сборки.
android {
buildTypes {
debug {
println "build type debug"
debuggable true
signingConfig signingConfigs.debug
sourceSets {
main.java {
exclude '/cz/kctdata/kmf/Reader/KMFReaderCN51A60.java'
}
main.java.getIncludes().each { println "Added include: $it" }
main.java.sourceFiles.each { println "File in source set: " + it }
}
}
release {
println "build type release"
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
sourceSets {
main.java {
exclude '/cz/kctdata/kmf/Reader/KMFReaderCN51A60.java'
}
main.java.getIncludes().each { println "Added include: $it" }
main.java.sourceFiles.each { println "File in source set: " + it }
}
}
debugAPI23 {
println "build type debugAPI23"
debuggable true
signingConfig signingConfigs.debug
sourceSets {
main.java {
exclude '/cz/kctdata/kmf/Reader/KMFReaderCN51A42.java'
}
main.java.getIncludes().each { println "Added include: $it" }
main.java.sourceFiles.each { println "File in source set: " + it }
}
}
releaseAPI23 {
println "build type releaseAPI23"
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
sourceSets {
main.java {
exclude '/cz/kctdata/kmf/Reader/KMFReaderCN51A42.java'
}
main.java.getIncludes().each { println "Added include: $it" }
main.java.sourceFiles.each { println "File in source set: " + it }
}
}
}
}
Я не могу использовать конкретную папку типа сборки, потому что у меня больше типов сборки, и некоторые файлы должны быть представлены в нескольких типах сборки. Я не хочу иметь несколько копий одного и того же файла в моем проекте.
2 ответа
Последние плагины для Android имеют новую концепцию "размеров". https://developer.android.com/studio/build/build-variants.html
Таким образом, вы можете попробовать использовать вкусы и размеры. Пример:
android {
flavorDimensions "dim1", "dim2"
}
productFlavors {
flavor1 {
dimension "dim1"
}
flavor2 {
dimension "dim1"
}
flavor3 {
dimension "dim1"
}
flavor4 {
dimension "dim2"
}
}
Здесь вы получите комбинацию между типом сборки + фаворитом с dim1 + flavour с dim2, другими словами, файлы из flav4 будут доступны во всех вариантах. Например, в варианте debugFlavor1Flavor4 у вас будут все ресурсы, которые относятся к debug, flav1 и flav4
Вы можете создать окно терминала в Android Studio, выбрав вручную, какой вариант вкуса / сборки вы хотите:
./gradlew assembleRelease
Или же:
./gradlew assembleDebug
Или же:
./gradlew assemble debugAPI23
Я смог сделать это с ароматизаторами продукта, предположим, у меня есть три вкуса (Stage, Prod, QA) . Затем я могу создавать сборки с помощью следующих команд:-
- prod с releaseAPI23 (создаст сборку в PROJECT/android/app/build/output / apk / prod / releaseAPI23)
./gradlew сборка ProdReleaseAPI23.
- QA с releaseAPI23 (создаст сборку в PROJECT/android/app/build/output / apk / qa / releaseAPI23)
./gradlew assemblyQaReleaseAPI23.
- Этап с releaseAPI23 (сборка будет создана в PROJECT/android/app/build/output / apk / stage / releaseAPI23)
./gradlew assemblyStageReleaseAPI23.
** Вы можете попробовать разные варианты в соответствии с вашими потребностями