Intereting Posts
Почему мое приложение начинает невероятно медленно (10 с +) при первом запуске, показывая только белый экран на Android 5.0? Ошибка Android Studio: неподдерживаемая версия плагина Android Gradle (0.9.2) Как мы можем добавить пункт меню динамически Как я могу поместить параметр в локализованную строку в Android? Как закрыть приложение для Android? Android Studio устанавливает точный сигнал тревоги с помощью значка Как отладить smali-код приложения Android? Как добавить обратный вызов выхода для facebook sdk в android Исключение NullPointerException, связанное с FragmentManager.popBackStack. Как решить? Как написать выходы в Log in Android? Как остановить сообщения logcat Можете ли вы использовать admob во время alfa и бета-тестирования в google play? Как отключить домашнюю и другие системные кнопки в Android? Как получить право на левую анимацию, чтобы начать работу Android, горизонтальный и вертикальный прокрутки для GridLayout

Есть ли способ получить исходный код из файла APK?

Жесткий диск на моем ноутбуке просто разбился, и я потерял весь исходный код приложения, над которым я работал последние два месяца. Все, что у меня есть, это файл APK, который хранится в моем письме, когда я отправил его другу.

Есть ли способ извлечь исходный код из этого файла APK?

Solutions Collecting From Web of "Есть ли способ получить исходный код из файла APK?"

Простой способ: использовать онлайн-инструмент http://www.javadecompilers.com/apk , загрузить apk и получить исходный код.


Процедура для декодирования файлов .apk, шаг за шагом:

Шаг 1:

  1. Создайте новую папку и скопируйте файл .apk, который вы хотите декодировать.

  2. Теперь переименуйте расширение этого файла .apk в .zip (например, переименуйте с filename.apk в filename.zip) и сохраните его. Теперь вы можете получить доступ к файлам classes.dex и т. Д. На этом этапе вы можете видеть чертежи, но не файлы xml и java, поэтому продолжайте.

Шаг 2:

  1. Теперь извлеките этот .zip-файл в ту же папку (или NEW FOLDER).

  2. Загрузите dex2jar и извлеките его в ту же папку (или NEW FOLDER).

  3. Переместите файл classes.dex в папку dex2jar.

  4. Теперь откройте командную строку и смените каталог на эту папку (или NEW FOLDER). Затем напишите d2j-dex2jar classes.dex (для mac terminal или ubuntu write ./d2j-dex2jar.sh classes.dex ) и нажмите enter. Теперь у вас есть файл classes.dex.dex2jar в той же папке.

  5. Загрузите java decompiler , дважды щелкните по jd-gui, щелкните по открытому файлу и откройте файл classes.dex.dex2jar из этой папки: теперь вы получаете файлы классов.

  6. Сохраните все эти файлы классов (в jd-gui, щелкните File -> Save All Sources) по имени src. На этом этапе вы получаете источник java, но файлы .xml по-прежнему не читаются, поэтому продолжайте.

Шаг 3:

Теперь откройте новую папку

  1. Вставьте файл .apk, который вы хотите декодировать

  2. Загрузите последнюю версию окна установки apktool AND apktool (оба могут быть загружены с той же ссылкой) и поместите их в одну папку

  3. Открыть командное окно

  4. Теперь запустите команду, например apktool if framework-res.apk и следующую

  5. apktool d myApp.apk (где myApp.apk обозначает имя файла, которое вы хотите декодировать)

Теперь вы получаете папку с файлами в этой папке и можете легко прочитать xml-файлы apk.

Шаг 4:

Это не какой-либо шаг, просто скопируйте содержимое обеих папок (в данном случае и новую папку) на один

И наслаждайтесь исходным кодом …

Это альтернативное описание – на всякий случай, если кто-то застрял с описанием выше. Следуйте шагам:

  1. Загрузите apktool.bat (или apktool для Linux) и apktool_<version>.jar из http://ibotpeaches.github.io/Apktool/install/
  2. Переименуйте файл jar сверху в apktool.jar и поместите оба файла в одну папку

  3. Откройте окно dos ( cmd.exe ) и перейдите в эту папку; Убедитесь, что установлена ​​среда Java (для Linux также проверьте заметки о необходимых библиотеках)
  4. Начало: apktool decode [apk file]

    Промежуточный результат : файлы ресурсов, AndroidManifest.xml

  5. Распаковать файл APK с распаковщиком по вашему выбору

    Промежуточный результат : classes.dex

  6. Загрузите и извлеките dex2jar-0.0.9.15.zip с http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=
  7. Перетащите и отпустите dex2jar.bat на dex2jar.bat (или введите <path_to>\dex2jar.bat classes.dex в поле DOS, для Linux используйте dex2jar.sh )

    Промежуточный результат : classes_dex2jar.jar

  8. classes_dex2jar.jar (может быть необязательным в зависимости от используемого декомпилятора)
  9. Декомпилировать файлы классов (например, с помощью JD-GUI или DJ Decompiler )

    Результат : исходный код

Примечание: не разрешается декомпилировать пакеты сторонних поставщиков; Это руководство предназначено для восстановления личного исходного кода только из файла APK; Наконец, полученный код, скорее всего, будет запутан

В то время как вы можете декомпилировать APK файл, вероятно, вы попадете в одну большую проблему:

Он не вернет код, который вы написали. Вместо этого он будет возвращать все встроенные компиляторы с переменными, заданными случайными именами, а также функциями, заданными случайными именами. Это может занять гораздо больше времени, чтобы попытаться декомпилировать и восстановить его в коде, который у вас был, чем начать.

К сожалению, такие вещи убили много проектов.
В будущем я настоятельно рекомендую изучить систему контроля версий, такую ​​как CVS , SVN и git и т. Д.

И как это сделать.

В Play Маркете также есть новое приложение, с помощью которого можно декомпилировать apk (системные приложения тоже) и просматривать исходный код прямо на вашем смартфоне. Он сохраняет файлы на SD-карте, чтобы вы могли просматривать их на своем компьютере. Это не требует корня или чего-то еще.

Просто установите и получайте удовольствие. Я думаю, что это самый простой способ декомпилировать приложение.

Apktool – лучшее, что вы можете попробовать. Я сохранил некоторые xml с ним, но, честно говоря, я не знаю, как это будет работать с кодом .java.

Я бы рекомендовал вам иметь репозиторий кода, даже если ваш единственный кодер. Я использовал Project Locker для своих собственных проектов. Это дает вам бесплатные svn и git repos.

В этих двух статьях описывается, как объединить использование apktool и dex2jar для получения файла APK и создания проекта Eclipse, который может его создавать и запускать.

http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html

http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html

В основном вы:

  1. Используйте apktool чтобы получить файлы ресурсов из apk
  2. Используйте dex2jar для получения файла jar, который содержит классы в формате, который понравится Eclipse.
  3. Создайте проект Eclipse, укажите его в файлах ресурсов и новом файле jar
  4. Откройте файл jar с помощью zip-утилиты и удалите существующие ресурсы
  5. Откройте файл jar с JDGui чтобы просмотреть исходный код
  6. Возьмите любой исходный код из JDGui , JDGui его в класс внутри Eclipse и измените его
  7. Удалите этот класс из файла jar (так что вы не имеете одного и того же класса, определенного несколько раз)
  8. Запустить его.

Apktool будет работать. Вам даже не нужно знать хранилище ключей для извлечения исходного кода (что немного страшно). Основной недостаток заключается в том, что источник представлен в формате Smali вместо Java. Другие файлы, такие как значок и main.xml, проходят отлично, хотя, возможно, стоит потратить время, чтобы хотя бы восстановить их. В конечном итоге вам, скорее всего, потребуется перезаписать Java-код с нуля.

Здесь вы можете найти apktool. Просто просто скачайте apktool и соответствующий помощник (для Windows, Linux или Mac OS). Я рекомендую использовать такой инструмент, как 7-zip, чтобы распаковать их.

Я покажу вам другой способ декомпилировать файлы .apk .

Вы можете пройти первые 2 шага от « prankul garg ». Таким образом, у вас есть еще одна возможность:

Шаг 3':

Загрузите «JD-GUI» , который легко найти. Откройте файл .jar в «jd-gui.exe». (Файл> Открыть файл> 'нашел ваш .jar- файл'). После этой процедуры вы можете сохранить все ресурсы в .zip- файле.

Так,

1st. Вы должны переименовать файл .apk в .zip.

2nd. Вам нужно декодировать файл .dex (если хотите, декодируйте файл .apk в dex2jar , это возможно)

3rd – Вы должны декодировать файл .jar с JD-GUI

Apktool для обратного проектирования сторонних, закрытых, бинарных приложений для Android.

Он может расшифровать ресурсы до почти первоначальной формы и перестроить их после внесения некоторых изменений.

Это позволяет отлаживать smali-код шаг за шагом. Кроме того, упрощается работа с приложением из-за проектной структуры файла и автоматизации некоторых повторяющихся задач, таких как создание apk и т. Д.

http://ibotpeaches.github.io/Apktool/

Может быть, легко увидеть источник:

 Android studio 2.3 -> Build -> Analyze APK -> Select the apk that you want to decompile -> see the source code 

Ref ::

https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2

Apktool – это путь. Интернет-служба apktool существует также: http://www.javadecompilers.com/apktool

Некоторые ограничения, очевидно, существуют из-за службы «онлайн-характер»: вы можете извлекать и исследовать активы и файл манифеста, но невозможно перекомпилировать приложение на данный момент.

Тем не менее, это беспроблемный способ «открыть» приложение для Android.

Ниже инструмента ONLINE :

http://www.javadecompilers.com/apk

Он делает ВСЕ одним щелчком мыши: декомпилированные .java-файлы + ресурсы + xml (в одном .zip-файле) с очень хорошим декомпилятором (jadx возвращает код Java в местах / функциях, где другие компиляторы возвращают комментарии внутри функции, такие как «невозможно декомпилировать» или некоторые Андроид ассемблер / машинный код)

Наслаждаться 🙂

Есть несколько способов сделать это:

  1. Используйте функцию «Профиль или отладка APK» в Android Studio 3.0.

    Это позволяет вам открывать и исследовать APK в Android Studio. Классы декомпилируются в smali. Ресурсы не извлекаются, и такие вещи, как «Перейти к определению», «Найти все ссылки» и отладка, не работают без исходного кода (Android-версия 3.0 canary 9). Некоторые дополнительные функции smali могут работать с smalidea .

    Android-студия

    выберите файл

    код

  2. Используйте jadx .

    Jadx декомпилирует код в заданном APK в исходные файлы java.

    jdax-IMG

  3. Используйте apktool .

    Apktool – это инструмент командной строки, который извлекает ресурсы и декомпилирует код в smali для данного apk. Вы также можете перекомпилировать, используя apktool. Вот пример этого в действии:

     $ apktool d test.apk I: Using Apktool 2.2.4 on test.apk I: Loading resource table... I: Decoding AndroidManifest.xml with resources... I: Loading resource table from file: 1.apk I: Regular manifest package... I: Decoding file-resources... I: Decoding values */* XMLs... I: Baksmaling classes.dex... I: Copying assets and libs... I: Copying unknown files... I: Copying original files... $ apktool b test I: Using Apktool 2.2.4 on test I: Checking whether sources has changed... I: Smaling smali folder into classes.dex... I: Checking whether resources has changed... I: Building resources... I: Building apk file... I: Copying unknown files/dir...