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 に答える