Android Gradle - можно использовать разделение только для выпуска?
Я хочу использовать "splits" на "abi", но только для сборки релиза. Это возможно? Я пытаюсь использовать переменную ext и переменную "def" также, которая по умолчанию установлена в false. Эта переменная имеет значение true в buildTypes для releaseWithLog (и выпуска).
Но я не знаю, как работает Gradle, потому что когда я добавляю writeln() с тестовым сообщением для "debug", "releaseWithLog" и "release" и запускает сборку, все сообщения выводятся, поэтому это подтверждает мне, что переменная "splitsEnabled" установлена в true, хотя я строю для отладки - и я ожидаю значение "false" для отладки (и не используя для этого отладки).
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion '20.0.0'
ext {
splitsEnabled = false
}
defaultConfig {
...
}
buildTypes {
debug {
...
}
releaseWithLog {
...
splitsEnabled = true
}
release.initWith(releaseWithLog)
release {
...
}
}
...
splits {
abi {
println(splitsEnabled)
enable splitsEnabled
reset()
include 'x86', 'armeabi-v7a', 'armeabi'
exclude 'x86_64', 'mips64', 'arm64-v8a', 'mips'
universalApk true
}
}
...
Ответы
Ответ 1
Это можно легко решить с помощью аргумента командной строки Gradle или поля Script parameters: "для задачи Gradle в Android Studio. Я использовал -P для определения символа dbgBld и использовал его для отладочных сборников, например:
gradle -PdbgBld installDebug
Мой файл build.gradle имеет следующую команду расщепления:
splits {
abi {
enable !project.hasProperty('dbgBld')
reset()
include 'armeabi', 'armeabi-v7a', 'x86', 'mips'
universalApk true
}
}
Теперь для создания выпуска я использую:
gradle assembleRelease
Символ 'dbgBld' не определен, поэтому поле разрешений splits разрешает true, и я получаю 5 APK файлов. При создании для отладки, -PdbgBld уже сохранен в моей конфигурации Android Studio, и я получаю только один "жирный" APK для отладки, что приводит к гораздо более быстрым сборкам отладки.
Грег