2017-08-11 3 views
1

私はABIに基づいてversionCodeを上書きするために、私のbuild.gradleで以下を定義しました。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 
    } 
} 

これは私に次のエラーを与えて、Gradleの4.1と3.0.0-β1のGradleプラグインを使用してAndroidのメーカー3.0ベータ1と2.3のGradleプラグインで動作しますが、ない:

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)

と無駄(同じエラー)にApkVariantOutputからoutputをキャスト。

+0

これはバグのようですので、私はここにチケットを提出しました - https://issuetracker.google.com/issues/64600304 – Mark

答えて

2

解決策は、OutputFile.FilterType.ABIOutputFile.ABIに変更することでした。これはFilterType列挙の文字列表現を使用します。

関連する問題