2017-08-11 73 views
1

我在我的build.gradle中定义了基于ABI覆盖versionCode的以下内容。如何用gradle插件3.0.0-beta1覆盖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工作室3.0测试版1,使用3.0.0-β1gradle这个插件的gradle与4.1,让我有如下错误:

Could not find method getFilter() for arguments [ABI] on ApkVariantOutputImpl_Decorated{apkData=FullSplit{type=FULL_SPLIT, fullName=developmentArm64-v8aDebug, filters=[FilterDataImpl{type=ABI, value=arm64-v8a}]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.

migration documentation似乎表明这可能有点破?我试过也试着:

def filter = output.getFilter(ApkVariantOutput.ABI)

和铸造outputApkVariantOutput无济于事(同样的错误)。

+0

这看起来像一个错误,所以我在这里提交了一张票 - https://issuetracker.google.com/issues/64600304 – Mark

回答

2

解决方法是将OutputFile.FilterType.ABI更改为OutputFile.ABI,该值使用FilterType枚举的字符串表示形式。