有没有办法使用 Android API 读取当前正在运行的应用程序的 META-INF\MANIFEST.MF 文件?
我想读取 classes.dex 文件的 SHA1,并将其用作我的一项 Assets 的加密 key 。
我不能使用 .apk 文件的签名,因为每次我创建一个新的 apk 时,我都需要重新加密我的 Assets 并放入 apk 文件,这需要对 .apk 重新签名,这变成了先有鸡还是先有蛋的问题。
最佳答案
我找到了一种方法。我将 .apk 文件作为 JarFile,然后我可以访问 .apk 中的各个文件。我相信这仅适用于运行此代码的 .apk 文件。
这里是:
// Get Package Name
String packageName = ctx.getPackageName();
// Get classes.dex file signature
ApplicationInfo ai = ctx.getApplicationInfo();
String source = ai.sourceDir;
JarFile jar = new JarFile(source);
Manifest mf = jar.getManifest();
Map<String, Attributes> map = mf.getEntries();
Attributes a = map.get("classes.dex");
String sha1 = (String)a.getValue("SHA1-Digest");
关于android - 读取安卓 MANIFEST.MF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3392189/