Как переопределить versionCode для фильтров ABI с помощью плагина gradle 3.0.0-beta1?
У меня есть следующее, определенное в моем build.gradle для переопределения versionCode
на основе ABI
,
import com.android.build.OutputFile
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def defaultCode = android.defaultConfig.versionCode
def filter = output.getFilter(OutputFile.FilterType.ABI)
def abiMultiplier = project.ext.versionCodes.get(filter)
if (abiMultiplier == null) {
abiMultiplier = 1
}
output.versionCodeOverride = abiMultiplier * 100000000 + defaultCode
}
}
Это работает с плагином 2.3 gradle, но не с Android Studio 3.0 beta 1, используя плагин 3.0.0-beta1 gradle с gradle 4.1, что дает мне следующую ошибку:
Не удалось найти метод getFilter() для аргументов [ABI] для ApkVariantOutputImpl_Decorated{apkData=FullSplit{type=FULL_SPLIT, fullName=developmentArm64-v8aDebug, filters=[FilterDataImpl{type=ABI, value=arm64-v8a}}].android.build.gradle.internal.api.ApkVariantOutputImpl.
Документация по миграции, кажется, указывает, что это может быть несколько сломано? Я пробовал также пытался:
def filter = output.getFilter (ApkVariantOutput.ABI)
и кастинг output
в ApkVariantOutput
безрезультатно (та же ошибка).
1 ответ
Решение было изменить OutputFile.FilterType.ABI
в OutputFile.ABI
, который использует строковое представление перечисления FilterType.