Могу ли я создать 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.

воздушно-Dex
источник
Приложения без полномочий root вряд ли могут содержать данные. AppMonster точно не подходит - а что касается Titanium, OP уже заявил, что он не соответствует его потребностям. Для ES я сомневаюсь, что это извлекает данные.
Иззи
Я только что попробовал ES, и он не включает данные в свою резервную копию. (Или, по крайней мере, когда на моем целевом устройстве без рута установлен резервный APK, ожидаемых данных там нет.) Насколько я могу судить, резервное копирование ES делает только копирование APK из / data / приложения для / SDCard / резервных копий.
Ян Рентон
0

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

gkeeg
источник