如果我这样做:
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文件名来显示我的应用程序的版本信息。
答案 0 :(得分:1)
您不能依赖于此,并且它绝对不会在' - '之后使用版本代码。特别是对于较新的版本,应用程序可以移动到SD卡,或转发锁定(也称为“应用程序加密”),因此磁盘上的实际文件可能与原始文件非常不同。
使用PackageManager
获取版本信息,保证是正确且最新的。更改构建系统以更新版本代码,并可能将其显示在“关于”对话框或类似对话框中,以便用户轻松报告。