Могу ли я создать APK из установленного приложения и его данных?


8

Я хотел бы взять установленное приложение, включая его данные, с рутированного Android-устройства и создать из него APK, подходящий для установки на некорневое Android-устройство.

Это возможно?

Изменить: Существующие ответы / комментарии, кажется, усиливают идею о том, что существующие приложения не поддерживают встраивание данных приложения в APK. Возможно, более фундаментальный вопрос заключается в том, может ли APK встраивать файлы, предназначенные для него /data/data/[appname], или они ограничены автономностью при установке?

Ноты:

  • Я предполагал, что если бы это было возможно, эта функция была бы встроена в такое приложение, как Titanium Backup. Titanium Backup может выполнить резервное копирование приложения + данных в один файл, но этот файл не является APK и может быть восстановлен только самим Titanium Backup - что мне не поможет, поскольку целевое устройство не имеет рута и поэтому не может работать с TB.
  • Решения, которые требуют использования терминала на телефоне или АБР, подойдут.

Спасибо.


Если вы загляните в папку резервного копирования TB, вы заметите, что в ней хранится .apkобычная папка (по крайней мере, вы можете взять ее). Мне нужно посмотреть в файлы данных; AFAIR это были просто сохраненные свойства, но я не могу вспомнить используемый формат. Тем не менее, восстановление данных на некорневом устройстве, вероятно, очень трудно достичь по той же причине, что и резервное копирование: нет доступа к папкам данных ...
— Иззи

@ Иззи ТБ имеет два метода резервного копирования. Обычно он хранит три файла в каталоге резервных копий: tar.gz, содержащий APK, tar.gz, содержащий содержимое / data / data / [app] /, и файл .properties, содержащий, как я полагаю, хэш файлы. Другой вариант (в разделе «Отправить эту резервную копию» -> «простой импорт») записывается один файл .TiBkp, который, как я считаю, содержит обычные три. В любом случае, как вы сказали, для восстановления данных в / data / data требуется корневой доступ. / [приложение] / на целевом устройстве
— Ян Рентон

Yepp. Последний формат предназначен для удобной передачи, например, на другое устройство (и спасибо, что сообщили об этом людям из ES File Explorer, теперь это приложение распознает эти файлы и предлагает открыть их по TB, если оно установлено). Я скорее обращался к формату (несжатых) пакетов данных (XML, SQLite, SQL ...), чтобы выяснить, как можно манипулировать ими - и прямо посередине вспомнил, что цель не имеет рута ... Тем не менее Это может быть интересной идеей для «индивидуального переноса» в другую корневую цель.
— Иззи

Ответы:


3

Теперь, прочитав больше о формате файла APK, я думаю, что теперь я могу смело ответить на свой вопрос с «это невозможно».

Файл APK не содержит структуру данных, которая «распаковывается» при установке, как пакеты, используемые, например, в большинстве дистрибутивов Linux. Вместо этого APK - это просто автономный файл JAR с добавленной маркировкой, содержащий байт-код приложения, манифест и сертификат, и ничего больше.

Содержимое /data/data/[appname]предположительно создается кодом приложения при его первом запуске (или в будущем), и нет способа встроить такие данные в APK, чтобы система автоматически перемещала их в правильное место назначения во время установки.


Это неправда, что APK содержит только байт-код, манифест и сертификат. Он также содержит любые ресурсы и ресурсы, используемые приложением, но они остаются в файле APK, когда приложение установлено: они не копируются, /data/data/если приложение не запрограммировано для этого самостоятельно.
— Дэн Халм,

1

Вы все еще можете получить APK приложения с такими приложениями, как ES File Explorer , AppMonster или Titanium Backup . Но я не знаю, поддерживают ли они данные при создании APK.


Приложения без полномочий root вряд ли могут содержать данные. AppMonster точно не подходит - а что касается Titanium, OP уже заявил, что он не соответствует его потребностям. Для ES я сомневаюсь, что это извлекает данные.
— Иззи

Я только что попробовал ES, и он не включает данные в свою резервную копию. (Или, по крайней мере, когда на моем целевом устройстве без рута установлен резервный APK, ожидаемых данных там нет.) Насколько я могу судить, резервное копирование ES делает только копирование APK из / data / приложения для / SDCard / резервных копий.
— Ян Рентон

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.