2017-08-11 5 views
1

J'ai les éléments suivants définis dans mon build.gradle pour remplacer le versionCode basé sur le ABI.Comment surcharger versionCode pour les filtres ABI avec gradle plugin 3.0.0-beta1?

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 
    } 
} 

Cela fonctionne avec le plug-in 2.3 gradle, mais pas avec Android Studio 3.0 beta 1, en utilisant le plugin gradle 3.0.0-beta1 avec gradle 4.1, me donner l'erreur suivante:

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.

Le migration documentation semble indiquer que cela pourrait être quelque peu cassé? J'ai essayé aussi essayé:

def filter = output.getFilter(ApkVariantOutput.ABI)

et coulée output-ApkVariantOutput sans résultat (même erreur).

+0

Cela semble être un bug, alors j'ai déposé un ticket ici - https://issuetracker.google.com/issues/64600304 – Mark

Répondre

2

La solution consistait à remplacer OutputFile.FilterType.ABI par OutputFile.ABI, qui utilise la représentation sous forme de chaîne de l'énumération FilterType.