I am creating multiple apk's for each ABI
, I did this to assign separate version code to each apk.
ext.abiCodes = ['armeabi-v7a':1, mips:2, x86:3]
import com.android.build.OutputFile
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def baseAbiVersionCode =
project.ext.abiCodes.get(output.getFilter(OutputFile.ABI))
if (baseAbiVersionCode != null) {
output.versionCodeOverride =
baseAbiVersionCode * 1000 + variant.versionCode
}
}
}
This is my dafaultConfig
, and the following versionCode
is for universalApk
defaultConfig {
versionCode 74
versionName "1.0.2"
}
I append the versionCode
with each service request, I also display the versionCode
in one of the activity. So i need the correct versionCode
to perform these operations, I use this code to get versionCode
int versionCode = BuildConfig.VERSION_CODE;
Now the problem is that, it displays the versionCode
that is stated in defaultConfig
and not the one that actually represents the build.
I need to know that how can i get the versionCode
that is assigned to this build, that may be some number greater than 1000
, and not the one that is assigned in dafaultConfig
To check version code you can use PackageInfo and PackageManager
I asked something similar here.
Since accessing
BuildConfig.VERSION_CODE
seems to be less expensive than accessing thePackageInfo
, I thought in a workaround to keep using the BuildConfig.java to retrieve theversionCode
in these situations, it's not as good as we had before withmergedFlavor.versionCode
that overrides theBuildConfig.VERSION_CODE
but since this change was made to improve the build time I'm more than happy to live with it.First you should set the
versionCode
in each flavor instead ofdefaultConfig
, example:Then and updating your code from above:
After this you will have the correct
versionCode
accessible throughBuildConfig.OVERRIDEN_VERSION_CODE
anywhere in the project.You should not read build config file, build config file will display the default configuration.
You should use PackageInfo
Which will display 1001 for armeabi-v7a, 1002 for mips and 1003 for x86