读取android MANIFEST.MF文件

读取android MANIFEST.MF文件,android,manifest,Android,Manifest,有没有办法使用Android API读取当前运行的应用程序的META-INF\MANIFEST.MF文件 我想读取classes.dex文件的SHA1,并将其用作我的一项资产的加密密钥 我不能使用.apk文件的签名,因为每次我创建一个新的apk时,我都需要重新加密我的资产并放入apk文件,这需要重新签名.apk,这就成了一个鸡和蛋的问题。我已经找到了一种方法。我选择.apk文件作为jar文件,然后可以访问.apk中的各个文件。我相信这只适用于运行此代码的.apk文件 这是: // Get Pac

有没有办法使用Android API读取当前运行的应用程序的META-INF\MANIFEST.MF文件

我想读取classes.dex文件的SHA1,并将其用作我的一项资产的加密密钥


我不能使用.apk文件的签名,因为每次我创建一个新的apk时,我都需要重新加密我的资产并放入apk文件,这需要重新签名.apk,这就成了一个鸡和蛋的问题。

我已经找到了一种方法。我选择.apk文件作为jar文件,然后可以访问.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");
//获取包名
字符串packageName=ctx.getPackageName();
//获取classes.dex文件签名
ApplicationInfo ai=ctx.getApplicationInfo();
字符串source=ai.sourceDir;
JarFile jar=新的JarFile(源);
Manifest mf=jar.getManifest();
Map Map=mf.getEntries();
属性a=map.get(“classes.dex”);
字符串sha1=(字符串)a.getValue(“sha1摘要”);

使用以下方法检测外部Jar/SDK MANIFEST.MF信息。我们可以使用此信息检测Jar版本等。使用

public void getSDKInfo() {
Package package = Manifest.class.getPackage();
String specTitle = package.getSpecificationTitle();
String vendor = package.getSpecificationVendor();
String virsion = package.getSpecificationVersion();
}