при сборке Gradle не удалит эти файлы в папке активов, даже если они не используются.
Хорошее решение, без бесполезных флагов, должно быть таким:
Первое, что нужно сделать, это отделить ваши варианты от стандартных Android buildTypes (debug / release), потому что они содержат разные флаги во время компиляции и, возможно, разные подписи apk. Поэтому лучше не создавать никаких конфликтов с именами.
Создайте новое измерение, которое фактически определяет, что отлаживается, а что нет. Вы могли бы назвать это environment
, и 2 измерения будут dev
и prod
.
flavorDimensions "environment"
productFlavors {
dev {
dimension "environment"
}
prod {
dimension "environment"
}
Создание 3 файлов:
main \ java \ com \ companyname \ android \ AbstractApplication.kt
abstract class AbstractApplication: DaggerApplication() {
..
abstract fun initEnvApp()
fun onCreate() {
...
initEnvApp()
...
}
dev \ java \ com \ companyname \ android \ MyApplication.kt
abstract class MyApplication: AbstractApplication() {
..
fun initEnvApp() {
\\init your debug logic
}
prod \ java \ com \ companyname \ android \ MyApplication.kt
abstract class MyApplication: AbstractApplication() {
..
fun initEnvApp() {
\\init your prod logic or leave it empty
}
Организуйте свои файлы следующим образом:
main
AndroidManifest.xml (reference to DebugActivity, add this attribute to application tag: android:name="com.companyname.android.MyApplication")
\java\com\companyname\android\AbstractApplication.kt
dev
\java\com\companyname\android\MyApplication.kt
\java\com\companyname\android\DebugActivity.kt
\...all assets files
prod
\java\com\companyname\android\MyApplication.kt
Создайте свои APK с помощью
gradlew assembleDevDebug
gradlew assembleProdRelease
или любой другой комбинации, которую вы хотите.
Если, кроме debug / не отладка (которую мы назвали dev / prod), вам нужно разделить logi c по-другому, вы всегда можете создать другую среду (я назову ее foo
), и после определения ваших productFlavors (скажем, * 1039) * и foo2
), вы будете строить следующим образом:
gradlew assembleDevFoo1Debug
gradlew assembleDevFoo2Debug
gradlew assembleProdFoo2Release
или любую другую комбинацию, которую хотите
В обоих случаях сборки, принадлежащие среде DEV, будут содержать вашего разработчика активы и классы, в то время как любая другая сборка PROD не будет.