Восстановить файлы из apk Google Play

Некоторое время назад я загрузил в Google Play приложение для моего семейного ресторана, которое показывало что-то вроде меню, расписания, цен и т. д. Он все еще находится в Google Play, и у меня есть доступ к нему от разработчиков Google, но проблема в том, что я потерял весь код.

Есть ли способ восстановить данные, чтобы добавить новую информацию, а затем обновить мое приложение?

Большое спасибо.


person Aldridge1991    schedule 11.01.2013    source источник
comment
Если у вас нет резервной копии ключа разблокировки, вы не сможете обновить свое приложение в Google Play. Вам придется перевыпустить его с другим именем пакета.   -  person iagreen    schedule 12.01.2013


Ответы (2)


Для этого вам понадобится рутованное устройство:

Установите приложение на свое устройство, а затем снимите apk с устройства, используя:

  1. Подключите устройство Android с «рутом» к компьютеру с помощью прилагаемого USB-кабеля.
  2. В командной строке adb (обычно C:\android-sdk-windows\tools\) введите adb shell и нажмите Enter
  3. Переключитесь на пользователя root, введите su и нажмите Enter.
  4. введите «cd data/app» и нажмите Enter
  5. Перечислите все установленные apk-файлы, введите ls и нажмите Enter (найдите тот, который вы хотите извлечь)
  6. В другом командном окне перетащите один из файлов на свой компьютер, набрав: adb pull /data/app/application.apk name.apk и нажмите Enter.

Получив apk, переименуйте его в whatever.zip и распакуйте в виде zip-файла. Теперь вы увидите кучу папок. Все, что находится в папке с вашими активами, теперь можно восстановить прямо сейчас. Для кода Java необходимо использовать dex2jar для преобразования classes.dex в файл .jar. После этого вы можете использовать JD-GUI для чтения кода из файла .jar. .

Чтобы извлечь AndroidManifest.xml и все, что находится в папке res (файлы макета xml, изображения и т. д.), вы должны использовать APKTool Выполните следующую команду:

apktool.bat d sampleApp.apk

Он также извлекает файл .smali из всех файлов .class, но его трудно читать, и вместо него следует использовать код из dex2jar.

person Raghav Sood    schedule 11.01.2013
comment
@iagreen Я пошел и проверил это, но не могу найти возможность скачать apks. - person Raghav Sood; 12.01.2013
comment
Вы правы, я думал, что это было раньше. Моя ошибка. Удалил дезинформацию! - person iagreen; 12.01.2013
comment
У меня установлено приложение, но я не могу найти его при выполнении ls :S - person Aldridge1991; 12.01.2013
comment
Это может быть не имя вашего приложения. Вместо этого найдите имя своего пакета - person Raghav Sood; 12.01.2013
comment
Ни один из них... так странно! Я думаю, что нашел проблему. На странице разработчиков google была установлена ​​защита от копирования. Я изменил это. Давайте посмотрим... - person Aldridge1991; 12.01.2013

Если вы обфустицируете свой код с помощью progaurd при создании файла APK, это невозможно.

Если нет, вы можете в некоторой степени декомпилировать классы и внести некоторые изменения в декомпилированный класс, и вы сможете заставить его работать... Существует несколько инструментов для декомпиляции файла APJK.

Спасибо,

person Ramesh Sangili    schedule 11.01.2013
comment
Даже если он запутан, он сможет понять большую часть логики и т. д., глядя на него. в конце концов, он написал исходный код. - person Raghav Sood; 12.01.2013
comment
Да, код очень-очень простой, но у меня ушло много времени... вот почему я пытаюсь сделать это, а не переделывать. Всем спасибо, товарищи! - person Aldridge1991; 12.01.2013