android - 读取安卓 MANIFEST.MF 文件

标签 android manifest

有没有办法使用 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/

相关文章:

android - 通知区 "clear all"按钮回调

具有不同 subview 的 Android Listview

android - AWS Cognito 社交登录

c++ - 使用 list 的 DLL 重定向

java - int 到 Java 中的 unsigned char 数组

android - 运行 gradlew 测试时出现 Robolectric 错误

Android:如何在应用程序 list 中引用可绘制库

html - 是否可以为支持主题颜色的浏览器使用不同的图标?

android - 我的应用程序不会运行,也不会切换 Activity

Java list 文件