执行adb安装后,.apk文件名发生了变化

时间:2012-07-24 20:07:55

标签: android android-manifest apk adb

如果我这样做:

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文件名来显示我的应用程序的版本信息。

1 个答案:

答案 0 :(得分:1)

您不能依赖于此,并且它绝对不会在' - '之后使用版本代码。特别是对于较新的版本,应用程序可以移动到SD卡,或转发锁定(也称为“应用程序加密”),因此磁盘上的实际文件可能与原始文件非常不同。

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