Чтение файла Android MANIFEST.MF - PullRequest
2 голосов
/ 03 августа 2010

Есть ли способ прочитать файл META-INF \ MANIFEST.MF запущенного в данный момент приложения с помощью Android API?

Я хочу прочитать SHA1 для файла classes.dex и использовать его в качестве ключа шифрования для одного из моих активов.

Я не могу использовать подпись для файла .apk, потому что каждый раз, когда я создаю новый apk, мне нужно повторно зашифровать свой актив и вставить в файл apk, который требует повторной подписи .apk, и это становится проблемой курицы и яйца.

Ответы [ 2 ]

7 голосов
/ 03 августа 2010

Я нашел способ сделать это.Я выбираю файл .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");
0 голосов
/ 07 марта 2013

Используйте следующий способ для обнаружения внешнего файла JAR / SDK MANIFEST.MF Info.Мы могли бы использовать эту информацию для определения версии 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();
}
...