Откат Android Gradle к другому варианту сборки
У меня есть четыре варианта сборки, A, B, C и D. Для конкретной деятельности у меня есть общий код в базовом классе в основных исходных наборах. Я хочу использовать дополнительные функциональные возможности, чтобы A & B имели такие же дополнительные функциональные возможности, а C & D - те же функциональные возможности, которые отличаются от A & B. Я смог сделать это путем копирования и вставки расширяющего класса в исходные наборы для A & B и C & D соответственно; однако, это делает обслуживание проблемой. Я не могу объединить варианты A & B или C & D, потому что они имеют другие важные различия. Как включить класс таким образом, чтобы он только в A и B ссылался на него и только на C и D ссылался на него. Я попытался добавить исходные наборы java, но потом не смог найти другие классы или другие модули.
2 ответа
Я смог решить эту проблему, создав две новые директории E & F. Затем я добавил наборы источников для A & B, чтобы быть их текущими наборами источников, а E и для C & D добавили F.
sourceSets {
A {
java.srcDirs = ['src/A/java', 'src/public/E']
}
B {
java.srcDirs = ['src/B/java', 'src/public/E']
}
C {
java.srcDirs = ['src/C/java', 'src/internal/F']
}
D {
java.srcDirs = ['src/D/java', 'src/internal/F']
}
}
Вы должны проверить это: https://developer.android.com/studio/build/build-variants#resolve_matching_errors
// In the app's build.gradle file.
android {
flavorDimensions 'tier'
productFlavors {
paid {
dimension 'tier'
// Because the dependency already includes a "paid" flavor in its
// "tier" dimension, you don't need to provide a list of fallbacks
// for the "paid" flavor.
}
free {
dimension 'tier'
// Specifies a sorted list of fallback flavors that the plugin
// should try to use when a dependency's matching dimension does
// not include a "free" flavor. You may specify as many
// fallbacks as you like, and the plugin selects the first flavor
// that's available in the dependency's "tier" dimension.
matchingFallbacks = ['demo', 'trial']
}
}
}
и дополнительную документацию по адресу https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/ProductFlavor#matchingfallbacks .