有没有办法使用Android API读取当前正在运行的应用程序的META-INF \ MANIFEST.MF文件?
我想为classes.dex文件读取SHA1,并将其用作我的一个资产的加密密钥。
我不能使用.apk文件的签名,因为每次我创建一个新的apk我需要重新加密我的资产并放入apk文件,这需要重新签名.apk,它成为鸡和蛋的问题。
答案 0 :(得分:7)
我找到了办法。我将.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");
答案 1 :(得分:0)
使用以下方法检测外部Jar / SDK MANIFEST.MF信息。我们可以使用此信息来检测Jar版本等。使用http://docs.oracle.com/javase/6/docs/api/java/util/jar/Manifest.html
public void getSDKInfo() {
Package package = Manifest.class.getPackage();
String specTitle = package.getSpecificationTitle();
String vendor = package.getSpecificationVendor();
String virsion = package.getSpecificationVersion();
}