我在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,使用带有gradle 4.1的3.0.0-beta1 gradle插件,给出了以下错误:
无法为参数[ABI]找到方法getFilter() ApkVariantOutputImpl_Decorated {apkData = FullSplit {类型= FULL_SPLIT, fullName = developmentArm64-v8aDebug,filters = [FilterDataImpl {type = ABI, type = arm64-v8a}]}}类型 com.android.build.gradle.internal.api.ApkVariantOutputImpl。
migration documentation似乎表明这可能会有些破裂?我也尝试过尝试过:
def filter = output.getFilter(ApkVariantOutput.ABI)
并将output
投射到ApkVariantOutput
无效(相同的错误)。
答案 0 :(得分:3)
解决方案是将GROUP BY
更改为OutputFile.FilterType.ABI
,它使用FilterType枚举的字符串表示形式。