Модификация системных приложений: требуется оригинальный AndroidManifest.xml, но почему?
Основные шаги по редактированию системы APK:
- Сделайте резервную копию APK.
- Декомпилировать рабочий APK.
- Вносит изменения.
- Перекомпилировать рабочий APK.
- Скопируйте и вставьте папку META-INF и AndroidManifest.xml из резервного APK (который никогда не декомпилировался) в перекомпилированный рабочий APK. Готово!
META-INF содержит подпись: это имеет смысл. Но какова цель AndroidManifest.xml в сохранении оригинальной подписи? Я проверял это сам, и Android не загружал бы APK с перекомпилированным AndroidManifest.xml (т.е. не оригинальным AndroidManifest.xml).
Во многих руководствах говорится о необходимости скопировать как META-INF, так и AndroidManfest.xml из оригинального APK в модифицированный APK.
Самый близкий ответ, который я нашел, состоит в том, что перекомпиляция повреждает AndroidManifest.xml (см. http://rootzwiki.com/topic/268-guide-newbies-how-to-port-themes/), но я сравнил оригинал и пост- перекомпиляция AndroidManifest.XML, и они идентичны (говорит WinMerge, и у них есть идентичные хэши MD5 и SHA1). Другой человек ( http://miuiandroid.com/community/threads/q-remove-miui-torch-app.16013/) предполагает, что META-INF и AndroidManifest.xml так или иначе связаны друг с другом.
Все так делают, но кто-нибудь знает почему?
1 ответ
При проверке системного APK Android проверяет подпись подмножества файлов в APK, чтобы убедиться, что они не были подделаны. Эти файлы включают AndroidManifest.xml
, classes.dex
, и другие. Если SHA-1 переваривает (хранится в META-INF/MANIFEST.MF
а также META-INF/CERT.SF
) исходных файлов не соответствуют дайджестам файлов в модифицированном APK, тогда Android откажется загружать APK.