【问题标题】:How to override versionCode for ABI filters with gradle plugin 3.0.0-beta1?如何使用 gradle 插件 3.0.0-beta1 覆盖 ABI 过滤器的 versionCode?
【发布时间】:2017-08-11 13:36:08
【问题描述】:

我在 build.gradle 中定义了以下内容,用于基于 ABI 覆盖 versionCode

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,给我以下错误:

找不到参数 [ABI] 的 getFilter() 方法 ApkVariantOutputImpl_Decorated{apkData=FullSplit{type=FULL_SPLIT, fullName=developmentArm64-v8aDebug, filters=[FilterDataImpl{type=ABI, value=arm64-v8a}]}} 类型 com.android.build.gradle.internal.api.ApkVariantOutputImpl.

migration documentation 似乎表明这可能有些损坏?我试过也试过:

def filter = output.getFilter(ApkVariantOutput.ABI)

并将output 转换为ApkVariantOutput 无济于事(同样的错误)。

【问题讨论】:

标签: android-studio-3.0 android-gradle-3.0


【解决方案1】:

解决方案是将OutputFile.FilterType.ABI 更改为OutputFile.ABI,它使用FilterType 枚举的字符串表示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-19
    • 2013-05-01
    • 2018-08-14
    • 2018-07-08
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 2015-08-03
    相关资源
    最近更新 更多