注意:已经看到了this question
检查Oreo模拟器上的Android应用程序位置,APK仍然安装在/ data / app。但是,而不是以下格式:
/data/app/<package_name> or optionally /data/app/<package_name>-1
现在
/data/app/<package_name>-_-<22 chars base 64>
或
/data/app/<package_name>-<some chars>-<22 chars base 64>
有谁知道这个变化?我试过谷歌搜索,但是&#39; APK android location base64&#39;组合将产生大量不相关的结果(或谷歌将忽略base64关键字)
指向Google博客或github提交的链接会很不错。如果有人知道的话,我会选择AOSP的一般位置。理想情况下,我想知道为什么(更改),以及如何(生成base64)。
答案 0 :(得分:5)
自Android Oreo以来,APK的安装路径已更改,请参阅: https://android.googlesource.com/platform/frameworks/base/+/android-8.0.0_r36/services/core/java/com/android/server/pm/PackageManagerService.java
当PackageManagerService尝试查找安装APK的正确路径时,它使用getNextCodePath(File targetDir,String packageName)方法。在Android Oreo之前,代码是:
test
自Android Oreo以来,代码已更改为:
private File getNextCodePath(File targetDir, String packageName) {
int suffix = 1;
File result;
do {
result = new File(targetDir, packageName + "-" + suffix);
suffix++;
} while (result.exists());
return result;
}