Я знаю, как извлекать файлы apk в классы, используя систему на базе Windows, как показано ниже:
Шаг 1: Переименование файла .apk
Переименуйте файл .apk с расширением .zip(например, пусть файл "demofile.apk", после переименования он станет "demofile.apk.zip" )
Шаг 2: Получение java файлов из apk
Теперь извлеките переименованный zip файл в определенную папку, например, пусть эта папка будет "demofolder". Теперь загрузите dex2jar из ссылки для windows и извлеките этот zip файл в папку "demofolder".
Теперь откройте командную строку и перейдите в папку, созданную на предыдущем шаге и введите команду "dex2jar classes.dex" и нажмите enter.This сгенерируйте файл "classes.dex.dex2jar" в той же папке.
Теперь загрузите java-декомпилятор из ссылки и извлеките его и start (двойной щелчок) jd-gui.exe
В окне jd-gui просмотрите сгенерированный файл "classes.dex.dex2jar" в demofolder, это даст все файлы классов по имени src.
Теперь из меню "Файл" выберите "сохранить все источники", это создаст zip файл с именем "classes_dex2jar.src.zip", состоящий из всех пакетов и java файлы.
Извлеките этот zip файл (classes_dex2jar.src.zip), и вы получите все java файлы приложения.
Вышеуказанные шаги будут генерировать java файлы, но чтобы получить файлы xml следующие шаги.
Шаг 3: Получение xml файлов из apk
Загрузите apktool и apktool из ссылки и извлеките оба файлы и поместить его в ту же папку (например, "demoxmlfolder" ).
Поместите файл .apk в ту же папку (например, demoxmlfolder)
Теперь откройте командную строку и перейдите в каталог, в котором хранится apktool (здесь "demoxmlfolder" ) и введите команду "apktool if framework-res.apk" Выше команда должна привести к установке "Framework..." Теперь в командной строке введите команду "apktool d filename.apk" (где filename - это имя файла apk). Это приведет к созданию папки name filename в текущем каталоге (здесь demoxmlfolder), где все xml файлы будут сохранены в папке res\layout.
Но я хотел бы знать, как выполнить вышеуказанный программно в Android. Поэтому мое приложение для Android может просто извлечь другой файл приложения dex. Я не против, если файл dex будет скопирован в другом месте на телефоне, а затем декомпилирован (это просто декомпиляция, в которой я застрял)
В принципе, как показано ниже, у меня есть доступ к каждому окну dex, а не к тому, как декомпилировать его в Android.
Любая помощь будет фантастической.
final PackageManager pm = getPackageManager();
PackageInfo packageInfo = null;
try {
packageInfo = pm.getPackageInfo("PACKAGE NAME HERE", PackageManager.GET_META_DATA);
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
File file = new File(packageInfo.applicationInfo.sourceDir);
Uri uri = Uri.fromFile(file);