0

如果我做:

adb install myAppRelease-2012-07-24_14-35-14.apk

当我尝试在安装后引用实际的 .apk 文件时

PackageManager pm = this.getPackageManager();
for (ApplicationInfo app : pm.getInstalledApplications(PackageManager.GET_META_DATA)) {
    Log.d("PackageList", "package: " + app.packageName + ", sourceDir: " + app.sourceDir);
    String appName = "myAppRelease"
    if(app.packageName.contains("myApp")){
        if(app.sourceDir.contains(appName)){
            apkVersion = app.sourceDir.substring(app.sourceDir.indexOf(appName), app.sourceDir.indexOf(apk));
        }
    }
}

我看到的是这样的:

07-24 14:46:40.190: D/PackageList(7421): package: myApp, sourceDir: /data/app/myApp-1.apk

我期望看到的是:

07-24 14:46:40.190: D/PackageList(7421): package: myApp, sourceDir: /data/app/myAppRelease-2012-07-24_14-35-14.apk

看来它使用

android:label="myApp"
android:versionCode="1"

从清单文件。

我的问题是,为什么它不保留原始的 .apk 文件名?我依靠 .apk 文件名来显示我的应用程序的版本信息。

4

1 回答 1

1

你不能依赖这个,它绝对不使用'-'后面的数字的版本代码。特别是对于较新的版本,应用程序可以移动到 SD 卡,或向前锁定(又名“应用程序加密”),因此磁盘上的实际文件可能与原始文件有很大不同。

用于PackageManager获取版本信息,保证正确且最新。更改您的构建系统以更新版本代码,并可能在“关于”对话框或类似对话框中显示它,以便用户轻松报告它。

于 2012-07-25T02:49:21.733 回答