Fixed
Status Update
Comments
be...@gmail.com <be...@gmail.com> #2
Seems that the problem is on our side though...
be...@gmail.com <be...@gmail.com> #3
It seems that writing to applicationVariants.outputs.versionCodeOverride actually update the applicationVariants.versionCode, which was not the case before. So the code below does:
```
applicationVariants.all { variant ->
variant.outputs.each { output ->
def baseAbiVersionCode = project.ext.abiVersionCodes.get(output.getFilter(OutputFile.ABI))
// Known limitation: it does not modify the value in the BuildConfig.java generated file
// Seehttps://issuetracker.google.com/issues/171133218
print "ABI " + output.getFilter(OutputFile.ABI) + " \tvariant.versionCode " + variant.versionCode
output.versionCodeOverride = variant.versionCode * 10 + baseAbiVersionCode
print " \t-> VersionCode = " + output.versionCodeOverride + "\n"
}
}
```
Outputs:
```
ABI arm64-v8a variant.versionCode 4010009 -> VersionCode = 40100092
ABI armeabi-v7a variant.versionCode 4010009 -> VersionCode = 40100091
ABI null variant.versionCode 4010009 -> VersionCode = 40100090
ABI x86 variant.versionCode 40100090 -> VersionCode = 401000903
ABI x86_64 variant.versionCode 40100090 -> VersionCode = 401000904
```
```
applicationVariants.all { variant ->
variant.outputs.each { output ->
def baseAbiVersionCode = project.ext.abiVersionCodes.get(output.getFilter(OutputFile.ABI))
// Known limitation: it does not modify the value in the BuildConfig.java generated file
// See
print "ABI " + output.getFilter(OutputFile.ABI) + " \tvariant.versionCode " + variant.versionCode
output.versionCodeOverride = variant.versionCode * 10 + baseAbiVersionCode
print " \t-> VersionCode = " + output.versionCodeOverride + "\n"
}
}
```
Outputs:
```
ABI arm64-v8a variant.versionCode 4010009 -> VersionCode = 40100092
ABI armeabi-v7a variant.versionCode 4010009 -> VersionCode = 40100091
ABI null variant.versionCode 4010009 -> VersionCode = 40100090
ABI x86 variant.versionCode 40100090 -> VersionCode = 401000903
ABI x86_64 variant.versionCode 40100090 -> VersionCode = 401000904
```
uc...@google.com <uc...@google.com>
ar...@google.com <ar...@google.com> #5
This looks like Gradle issue, not C++ build specifically.
xa...@google.com <xa...@google.com>
je...@google.com <je...@google.com> #6
this is happening when there is a universal APK and you override the versionCode (and probably the versionName would be the same).
workaround :
def universalApkOutput = null
variant.outputs.all { output ->
// set the versionCode on the output.
if (output.getFilter(com.android.build.OutputFile.ABI)!=null) {
def baseAbiVersionCode = project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI))
print "ABI " + output.getFilter(com.android.build.OutputFile.ABI) + " \tvariant.versionCode " + variant.versionCode
output.versionCodeOverride = variant.versionCode * 10 + baseAbiVersionCode
print " \t-> VersionCode = " + output.versionCodeOverride + "\n"
} else {
universalApkOutput = output
}
}
if (universalApkOutput != null) {
def baseAbiVersionCode = project.ext.versionCodes.get(null)
print "ABI Universal \tvariant.versionCode " + variant.versionCode
universalApkOutput.versionCodeOverride = variant.versionCode * 10 + baseAbiVersionCode
print " \t-> VersionCode = " + universalApkOutput.versionCodeOverride + "\n"
}
je...@google.com <je...@google.com> #7
there is obviously an easier workaround by saving the variant versionCode.
// assign different version code for each output
def baseVariantVersion = variant.versionCode
variant.outputs.all { output ->
// set the versionCode on the output.
def baseAbiVersionCode = project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI))
print "ABI " + output.getFilter(com.android.build.OutputFile.ABI) + " \tvariant.versionCode " + variant.versionCode
output.versionCodeOverride = baseVariantVersion * 10 + baseAbiVersionCode
print " \t-> VersionCode = " + output.versionCodeOverride + "\n"
}
}
be...@gmail.com <be...@gmail.com> #8
Thanks for the workaround, will test it.
It's worth noting that I haven't seen this warning output:
```
WARNING: API 'ApkVariantOutput.getVersionCodeOverride()' is obsolete and has been replaced with 'VariantOutput.versionCode()'.
It will be removed in version 5.0 of the Android Gradle plugin.
Gradle Properties must be used to change Variant information.
For more information, seehttps://d.android.com/r/tools/use-properties .
To determine what is calling ApkVariantOutput.getVersionCodeOverride(), use -Pandroid.debug.obsoleteApi=true on the command line to display more information.
```
So I will iterate on my previous fix.
It's worth noting that I haven't seen this warning output:
```
WARNING: API 'ApkVariantOutput.getVersionCodeOverride()' is obsolete and has been replaced with 'VariantOutput.versionCode()'.
It will be removed in version 5.0 of the Android Gradle plugin.
Gradle Properties must be used to change Variant information.
For more information, see
To determine what is calling ApkVariantOutput.getVersionCodeOverride(), use -Pandroid.debug.obsoleteApi=true on the command line to display more information.
```
So I will iterate on my previous fix.
je...@google.com <je...@google.com> #9
fip : Change-Id: I808fb7e298b684b911de075f97551f5667e1b5db
Description
For instance, if the versionCode is 123, I get:
For armeabi-v7a: 123 (OK)
For arm64-v8a: 123 (OK)
For x86: 1230 (KO)
For x86_64: 1230 (KO)
I will try to provide a sample app to isolate and demonstrate the problem.