«Xapk-to-apk» на службе сторонников *.apk-дистрибутивов (делаем *.apk из *.xapk при помощи Python).

Как многие из вас знают, некоторые установочные пакеты приложений распространяются не одним файлом *.apk, а в виде «наборов» из нескольких APK и дополнительных данных. На старых устройствах (Android 7 –8) и при установке «в лоб» через стандартный установщик это нередко заканчивается ошибками вроде «Приложение не установлено» или «Несовместимый пакет».

Что такое XAPK
Файл (*.xapk) — это, по сути, ZIP-архив с приложением, внутри которого обычно лежит "base.apk", дополнительные split-APK (для разных ABI/языков/плотностей экрана) и иногда кэш/OBB-данные. Такие пакеты часто встречаются на сторонних площадках и в альтернативных каталогах, потому что одним файлом удобнее распространять весь комплект.

Обычно проблему установки XAPK решают через отдельные установщики на телефоне (например, SAI): они подхватывают splits и ставят всё как «пакет». Но на практике установка через SAI иногда срывалась (особенно на больших пакетах, > 150Mb, а занятое место во внутренней памяти могло очищаться не сразу и не полностью — из-за чего приходилось прибегать к нестандартным способам уборки, вплоть до получения root-доступа.

К счастью, энтузиасты сделали Python-скрипты, которые позволяют собрать «обычный» *.apk из *.xapk и, что важно, сразу его подписать для дальнейшей установки на устройство.

Итак, скачиваем скрипт и смотрим инструкцию по подписи готовых файлов здесь:
https://github.com/LuigiVampa92/xapk-to-apk

Запуск: python3 xapktoapk.py file.xapk (также заявлена поддержка некоторых форматов пакетов, но основной сценарий — именно *.xapk). Скрипт разбирает XAPK как ZIP, декомпилирует "base.apk", добавляет splits и подписывает результат.

Скрипт поддерживает автоподпись через xapktoapk.sign.properties (по умолчанию используется debug.keystore, пароль: android).

Редакция канала в ближайшее время опробует этот способ и отпишется о результатах.

Comments

Be the first to add a comment