Как переопределить 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.

Другие вопросы по тегам