Модификация системных приложений: требуется оригинальный AndroidManifest.xml, но почему?

Основные шаги по редактированию системы APK:

  1. Сделайте резервную копию APK.
  2. Декомпилировать рабочий APK.
  3. Вносит изменения.
  4. Перекомпилировать рабочий APK.
  5. Скопируйте и вставьте папку 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.

Другие вопросы по тегам