android - 如果我们使用多个 APK,BuildConfig.VERSION_CODE 不会改变吗

标签 android performance android-layout android-gradle-plugin android-version

我正在创建 multiple apk's对于每个 ABI,我这样做是为了为每个 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
        }
    }
} 

这是我的dafaultConfig,下面的versionCode是针对universalApk

 defaultConfig {
        versionCode 74
        versionName "1.0.2"
}

我在每个服务请求中附加了 versionCode,我还在其中一个 Activity 中显示了 versionCode。所以我需要正确的 versionCode 来执行这些操作,我使用这段代码来获取 versionCode

int versionCode = BuildConfig.VERSION_CODE;

现在的问题是,它显示 defaultConfig 中声明的 versionCode 而不是实际代表构建的版本。

我需要知道如何获得分配给此构建的 versionCode,它可能是大于 1000 的某个数字,而不是那个在 dafaultConfig

中分配

最佳答案

要检查版本代码,您可以使用 PackageInfo 和 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();
}

关于android - 如果我们使用多个 APK,BuildConfig.VERSION_CODE 不会改变吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48111353/

相关文章:

android - 我怎么知道短信发送被权限检查阻止了?

java - 从android中的Socket读取数据

java - 如何从 json 数组获取 Json 对象并将其与模型类一起使用

c++ - Clang 为直觉上应该等效的表达式提供非常不同的性能

android - Google Plus 磁贴动画

android - 为什么 Glide 在 notifydatasetchanged 时使项目 ImageView 闪烁

sql-server - SQL Server 上的 LIKE 与 CONTAINS

java - 类文件格式的最终​​变量

android - 如何在 Android 中为自定义 View 绘制边框?

用于小型 2D 游戏的 Android 库