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
try {
PackageInfo pInfo = this.getPackageManager().getPackageInfo(getPackageName(), 0);
String version = pInfo.versionName; //version name
int verCode = pInfo.versionCode; //version code
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
You should not read build config file, build config file will display the default configuration.
You should use PackageInfo
try {
PackageInfo pInfo = this.getPackageManager().getPackageInfo(getPackageName(), 0);
String version = pInfo.versionName;
Log.e("name","name"+version);
Log.e("Code","code"+pInfo.versionCode);
}catch (Exception e){
e.printStackTrace();
}
Which will display 1001 for armeabi-v7a, 1002 for mips and 1003 for x86
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With