R.I.P BYTE44.RU
Сайт byte44.ru закроется 14 Сентября, Вы можете продлить сайту жизнь
Нужная сумма - 220 руб


Разбираем apk приложение для ОС андроид

Сен 19, 2016 by     No Comments    Posted under: Android

Что представляет из себя apk приложение ?

APK(Android Package Installer) — это обычный zip-архив, внутри которого, находятся:

1)META-INF, папка :
MANIFEST.MF: файл манифеста
CERT.RSA: Сертификат приложения
CERT.SF: Перечень ресурсов  и SHA-1 соответствующих строк в файле MANIFEST.MF.

2)lib, папка:

папка, содержащая скомпилированный код, специфичный к программному уровню процессора, папка разделена на несколько папок внутри:
armeabi: скомпилированный код для всех  процессоров на базе ARM
armeabi-v7a: скомпилированный код для всех ARMv7 процессоров и выше
x86: скомпилированный код  для процессоров x86
MIPS: скомпилированный код  для процессоров MIPS

3)res, папка

Содержит ресурсы приложения, не скомпилированные  в resources.arsc.

4)assets, файл:

папка, содержащая активы приложения , которые могут быть получены с помощью AssetManager.
5)AndroidManifest.xml, файл:

Дополнительный файл манифеста, описывающий имя, версию, права доступа, связанные файлы библиотеки для приложения. Этот файл собирается в бинарный XML, который может быть преобразован в XML , воспринимаемый и читаемый человеком, с помощью таких инструментов, как AXMLPrinter2, apktool или Androguard.

6)classes.dex, файл: 

Классы, скомпилированные в формате Dex, файл понятный виртуальной машине Dalvik

7)resources.arsc , файл: 

Файл, содержащий скомпилированные ресурсы,  например, бинарный XML, изображения и т.д.

 

 

Как разобрать приложение?

Примечание:Требуется установленная Java и Android SDK

 

Необходимо приложение apktool.jar

Скачать:

apktool_2-2-0

извлекаем из архива файл apktool.jar

создаем bat-файл рядом с этим файлом, с содержимым:

java -jar Полный_путь_к_apktool d Имя_приложения_с_расширением
pause

Пример:

java -jar E:\Android\ANDROID_TOOLZ\apktool_2.2.0.jar d SystemUI.apk
pause

Запускаем bat-файл

Пойдет процесс распаковки в папку с таким именем, как у приложения

Обратите внимание, что apktool декомпилирует файл classes.dex в .smali и также распаковывает resources.arsc

 

После каких-либо изменени, чтобы запаковать приложение обратно, используйте команду:

apktool b [Имя папки] [Имя файла apk, который будет собран]

 

Пример

java -jar E:\Android\ANDROID_TOOLZ\apktool_2.2.0.jar b SystemUI NewSystemUI.apk
pause

Создастся папка build(в папке исходного приложения), в ней находятся скомпилированные, но не собранные в apk файлы.

Файл apk создастся также внутри папки с исходникми, в папке dist !

Например, по бат файлу приведенному выше, апк будет лежать в

E:\Android\ANDROID_TOOLZ\SystemUI\dist\

 

Внимание!

При сборке

может вылезти ошибка W: Could not find sources

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

 

 

Важное примечание:

Помните, что собирать нужно той же версией apktool, которой разбирали.

Когда вы распаковываете и упаковываете обратно файл APK то он теряет свою  подпись. Так что, если вы хотите установить APK на устройство, вы должны подписать его еще раз с помощью Android Debug ключа или собственного.Иначе он не установится на устройство. О том как подписать приложение смотрите ниже.

 

Чтоб создать собственный keystore — запустите следующую команду(создайте бат-файл с таким содержимым и кликните по нему)

«C:\Program Files\Java\jre7\bin\keytool» -genkey -keyalg RSA -alias alias1 -keystore keystore.jks -storepass password -validity 7300 -keysize 2048
pause

 

где

«C:\Program Files\Java\jre7\bin\keytool» — путь до exe файла keytool в ява, кавычки обязательны для пути с пробелами

keystore.jks — файл кейстора, который будет создан

alias1 — имя алиаса

password — пароль keystore

7300 — период действия( в днях)

2048 — размер ключа (в данном случае — 2 байта)

Далее появится консольное окно, в котором нужно будет ввести имя и фамилию, имя подразделения организации, имя организации, местонахождение, штат или провинцию, код страны в двух буквах

Затем  после заполнения ответить — yes

java_keystore

как видим мы всё заполнили одним словом, хотя можно не заполняя ничего, нажимать Enter для продолжения

 

Далее

Нажимаем Enter, чтобы выбрать такой же пароль для alias1 , как и у кейстора(не путать keystore с alias)

В папке откуда запускался bat- файл, создастся файл keystore.jks. Им и будем подписывать приложение.

 

Для подписывания приложения запустить следующее:

«C:\Program Files\Java\jdk1.7.0_51\bin\jarsigner» -verbose -sigalg SHA1withRSA -digestalg SHA1
-keystore keystore.jks E:\Android\ANDROID_TOOLZ\drak\dist\drak.apk alias1

pause

где

«C:\Program Files\Java\jdk1.7.0_51\bin\jarsigner» — путь до файла jarsigner

keystore.jks — файл кейстора

E:\Android\ANDROID_TOOLZ\drak\dist\drak.apk — приложение, которое необходимо подписать

alias1 — имя алиаса

 

при запуске будет запрос пароля от alias1 , когда мы создавали кейстор и алиас, мы задали им одинаковые пароли, этот пароль — password

Вводим этот пароль и нажимаем Энтэр

 

Внимание!

При вводе пароля не будет видно ничего, будто командная строка игнорирует ввод, но на самом деле пароль вводится, пароль не будет скрываться ни за точками, ни за звездочками *, его просто будет не видно.

После ввода пароля приложение подпишется.Его можно устанавливать на телефон

 

А как проверить подписано ли приложение?

Проверить подпись приложения, можно так:

«C:\Program Files\Java\jdk1.7.0_51\bin\jarsigner» -verify -verbose -certs E:\Android\ANDROID_TOOLZ\drak\dist\drak.apk

pause

первый параметр — путь до программы jarsigner

E:\Android\ANDROID_TOOLZ\drak\dist\drak.apk — файл апк для верификации(проверки на подпись)

 


Вы можете обработать финальный apk утилитой zipalign

командой:

zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk

 

zipalign гарантирует, что все байты несжатых данных выравниваются относительно начала файла, что уменьшает объем оперативной памяти, потребляемой приложением.

your_project_name-unaligned.apk — исходный подписанный невыровненный апк-файл

your_project_name.apk — будущий апк-файл после выравнивания утилитой zipalign

 

Скачать zipalign

zipalign (версия с build-tools 24.0.0)

 

Также эту утилиту вы можете найти в Android SDK, в папке build-tools  и далее в соответствующей папке версии билд инструментов.

Comments are closed.