Импорт существующих APK в Android Studio как Project [duplicate]

TelephonyManger.getDeviceId () Возвращает уникальный идентификатор устройства, например IMEI для GSM и MEID или ESN для телефонов CDMA.

final TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);            
String myAndroidDeviceId = mTelephony.getDeviceId(); 

Но я рекомендую использовать:

Settings.Secure.ANDROID_ID, который возвращает идентификатор Android в качестве уникальной 64-разрядной шестнадцатеричной строки.

    String   myAndroidDeviceId = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); 

Иногда TelephonyManger.getDeviceId () возвращает null, поэтому для обеспечения уникального идентификатора вы будете используйте этот метод:

public String getUniqueID(){    
    String myAndroidDeviceId = "";
    TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    if (mTelephony.getDeviceId() != null){
        myAndroidDeviceId = mTelephony.getDeviceId(); 
    }else{
         myAndroidDeviceId = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); 
    }
    return myAndroidDeviceId;
}
1055
задан Jeroen Vannevel 4 April 2014 в 17:20
поделиться

16 ответов

Простой способ: использовать онлайн-инструмент 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 или 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 И окно установки apktool (обе могут быть загружены из одной и той же ссылки ) и поместите их в ту же папку
  3. Откройте командное окно
  4. Теперь запустите команду, например apktool if framework-res.apk и следующую
  5. apktool d myApp.apk (где myApp.apk обозначает имя файла, которое вы хотите декодировать)

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

Шаг 4:

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

и наслаждайтесь источником код ...

1394
ответ дан 19 revs, 17 users 47% 23 August 2018 в 15:46
поделиться

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

  1. Использовать функцию «Профиль или отладка APK» в Android Studio 3.0. Это позволяет вам открывать и исследовать APK в Android Studio. Классы декомпилируются в smali. Ресурсы не извлекаются, и такие вещи, как «Перейти к определению», «Найти все ссылки» и отладки, не работают без исходного кода (android studio 3.0 canary 9). Некоторые дополнительные функции smali могут работать с smalidea . android-studio [/g3] select-file [/g4] code [/g5]
  2. Используйте jadx . Jadx декомпилирует код в заданном APK для исходных файлов java. jdax-img [/g6]
  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...
    
6
ответ дан 0xcaff 23 August 2018 в 15:46
поделиться

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

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

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

2
ответ дан Andrew Rukin 23 August 2018 в 15:46
поделиться

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

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

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

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

3
ответ дан Biswajit Karmakar 23 August 2018 в 15:46
поделиться

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

  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 & amp; can = 2 & amp; q =
  7. перетащить classes.dex на dex2jar.bat (или введите <path_to>\dex2jar.bat classes.dex в поле DOS, для Linux используйте dex2jar.sh) Промежуточный результат : classes_dex2jar.jar
  8. unpack classes_dex2jar.jar (может быть необязательным в зависимости от используемого декомпилятора)
  9. декомпилировать ваши файлы классов (например, с помощью JD-GUI или DJ Decompiler ) Результат : исходный код

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

107
ответ дан Braiam 23 August 2018 в 15:46
поделиться

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

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

47
ответ дан Cilenco 23 August 2018 в 15:46
поделиться

Я лично рекомендую Show Java Android App получить исходный код. Вы можете загрузить его из магазина воспроизведения или из здесь

3
ответ дан Codelover 23 August 2018 в 15:46
поделиться

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

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

Шаг 3 ':

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

Итак,

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

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

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

5
ответ дан Franklin Hirata 23 August 2018 в 15:46
поделиться

Вы можете попробовать DexPatcher . Он даже интегрируется с Android Studio. Он использует внутренние функции Apktool и Dex2Jar . Вы также можете использовать эти инструменты самостоятельно. Apktool декомпилирует apk и извлекает файлы .dex, которые могут быть затем преобразованы в jar с использованием Dex2Jar. Jar можно декомпилировать с помощью JD-GUI . Вы можете увидеть Java-код с помощью этого инструмента. Хотя сходство декомпилированного кода с реальным кодом не может быть гарантировано. На рынке доступны некоторые усовершенствованные инструменты [f5] obfuscation , которые испортили код, чтобы затруднить декомпиляцию / понимание. например. Proguard

2
ответ дан Lakshmikant Deshpande 23 August 2018 в 15:46
поделиться

Этот сайт https://www.apkdecompilers.com/ сделал это автоматически.

Сначала я попробовал сайт, упомянутый в принятом ответе, но это не сработало я.

2
ответ дан M. Usman Khan 23 August 2018 в 15:46
поделиться

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

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

24
ответ дан Nikunj Paradva 23 August 2018 в 15:46
поделиться

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

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

16
ответ дан Ryan Berger 23 August 2018 в 15:46
поделиться

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

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

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

и как ее создать.

96
ответ дан Ryan Gooler 23 August 2018 в 15:46
поделиться

В этих двух статьях описывается, как объединить использование 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, вставьте его в класс внутри Eclipse и измените его
  7. Удалите этот класс из файла jar (так что у вас нет одного и того же класса, определенного в несколько раз s)
  8. Запустить его.
20
ответ дан Tom Hennen 23 August 2018 в 15:46
поделиться

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

http://www.javadecompilers.com/apk

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

6
ответ дан Vadim Kotov 23 August 2018 в 15:46
поделиться

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

В студии Android 2.3, Build -> Analyze APK -> Select the apk that you want to decompile. Вы увидите исходный код.

Linf для справки: https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2

6
ответ дан Vadim Kotov 23 August 2018 в 15:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: