Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как компилировать apk файл


Декомпиляция и Компиляция APK приложения Андроид


Декомпиляция и Компиляция APK приложения Андроид. Для того чтобы редактировать APK приложения. Прежде всего их нужно декомпилировать, а после скомпилировать! Как это сделать и чем можно узнать в этом уроке.

В прошлом уроке вы узнали из чего состоят основные внутренности приложения, а также что данные что APK приложения (в дальнейшем просто APK) можно открыть архиватором, но что либо изменить у вас не получиться! Нужна  Декомпиляция APK приложения Android!

Приступим!

Декомпиляция и Компиляция APK приложения Android — Необходимые компоненты

1. Java JDK — среда разработки;

2. ApkTool — программа декомпилятор;

3. ApkTool.bat — bat файл;

4. Sign Android — подпись приложения APK

Установка необходимых компонентов. Настройка Java

После установки Java JDK , необходимо, добавить ее в переменную Windows. Если кто не понял официальное куроводство то,

Скопируйте путь Java JDK:

Перейдите в меню Дополнительные настройки

(Мой) Компьютер ->Свойства системы->Дополнительные параметры системы->Дополнительно->Системные переменные->Правка

Java JDK настроена.

Настройка ApkTool

  1. Создать папку на диске C:\ и в нее переместить файлы apktool_x_x.jar и apktool.bat
  2. Файл apktool_x_x.jar переименовать в apktool.jar

Если появилось наподобие такой вывод информации, то все сделано правильно.

Декомпиляция APK

Чтобы  декомпилировать приложение, скопируйте файл APK приложения в папку где находится apktool, далее необходимо выполнить вот что, в командной строке ввести команду:

apktool d название.apk

Например:

apktool d browser.apk

Декомпиляция APK завершена.

После того как вы отредактируете или русифицируете APK, его надо Компилировать

Компиляция APK

Вводим в командной строке:

apktool b  имя_проекта

После чего перейдите в папку проекта ( в данном случае папка browser) и вы увидете две новые папки:

В папке dist будет находится готовое приложение:

Если папки dist не обнаружили, значит apktool не смог собрать редактируемый проект, причиной тому может быть то, что измения которые вы вносили(«поломали») не позволяют собрать приложение apk.

После компиляции приложения apk его необходимо подписать.


{rutube}99d2d223b27515cdf3de2adfc3c47909{/rutube}


Подпись APK

1. Для этого Вам надо разархивировать архив Sign Android

2. Скопировать готовое приложение в папку с распакованным Sign Android

3. Потянуть приложение на файл Sign_APK.bat после чего приложение будет подписано

Готовое подписанное приложение будет носить название apk_signed.apk

Приложение подписано!

Работа с системными APK

Для того чтобы модифицировать системные приложения необходимо прежде всего необходимо скормить программе APKTOOL системный файл framework -res.apk который находиться в системном разделе Android:

/system/framework/framework -res.apk

Для того чтобы скормить Apktool данный файл необходимо, ввести команду:

apktool if framework -res.apk

Учитывайте что, команду нужно вводить относительно пути расположения, то есть если файл framework -res.apk находиться в папке C:\primer, то команда будет выглядеть следующим обзором:

apktool if  С:\primer\framework -res.apk

Также для того чтобы можно было модифицировать системные файлы прошивка должна быть вначале Deodex-ирована.

Теперь как это можно все упросить! (не использовать командную строку)

Скачайте приложение SmartApkTool, данное программа имеет графический интерфейс и очень легкая в использование.

Как пользоваться SmartApkTool

Прежде всего вам надо установить и настроить Java JDK и Apktool как указано выше.

Откройте программу SmartApkTool

Если Вам необходимо Декомпилировать приложение в SmartApkTool, то выберите данный пункт и необходимое приложение

Если компилировать, то

и выбрать файл в проекте apktool.yml

Для подписи приложения APK, нажать обзор, выбрать приложение и подписать

Все так легко и просто!

Альтернативный вариант

Для тех кому не понравился SmartApkTool, есть альтернатива Android MultiTool 


 

Простой способ модификации Android приложения / Хабр

Бывает после релиза приложения его исходники куда-то деваются. Правда ведь, такое постоянно случается? И ничего не остается кроме как декомпилировать его и подправить несколько сотен строк кода и все это нужно сделать максимально быстро.

Вот и у меня появилась задача модифицировать приложение имея всего лишь его apk. И те, кто занимался декомпиляцией приложений знают насколько тяжело его потом скомпилировать.

Декомпиляция

Для Android'а существуют следующие утилиты:
  • ApkTool для декомпиляции ресурсов.
  • Dex2Jar для преобразования dex в jar.
  • JD-GUI для получения исходников из jar.
  • еще рекомендую JAD, некоторые места лучше декомпилирует чем JD-GUI.

Информации по их использованию в интернете достаточно.

Если попробовать собрать приложение после декомпиляции, то скорее всего оно не скомпилируется из-за ошибок, особо тяжело декомпилируются циклы и условия. Некоторые ошибки легко исправляются, но опять же разобраться во множестве условных переходов будет не просто, а когда их количество более ста или даже несколько тысяч, то такой способ восстановить приложение теряет эффективность, быстрее написать все заново.

На этом можно было и закончить эксперименты с декомпиляцией, но лень двигатель прогресса и родился новый способ.

Переопределение классов

Итак, jar это библиотека, так почему бы просто не подключить ее к новому проекту? Кидаем ее в папку libs, наследуемся от главной активити и компилируем. Все работает, главное чтоб не совпадали имена классов, поэтому названия пакетов должно отличаться иначе как минимум совпадут сгенерированные BuildConfig и R.

Таким способом можно отнаследоваться от Activity, Service, BroadcastReceiver и, возможно, некоторых других классов объявляемых в манифесте, так же в манифесте нужно будет указать новые имена классов, иначе они не будут использоваться.

Теперь можно переопределить виртуальные функции, но и только, тем более ключевое слово final не позволит это сделать и отнаследоваться тоже, поэтому идем дальше.

Замена классов

Разархивировав jar библиотеку получим class файлы, это скомпилированные классы, заметим, что при сборке проекта в папке bin/classes лежат те же class файлы, а что если подсунуть туда файлы из библиотеки…

Не все так просто, для начала нужно скомпилировать проект. Чтобы использовать классы исходного приложения нужно его как-то присоединить к проекту, но при этом не экспортировать. Делается это просто: из папки libs Эклипс сам экспортирует библиотеки, поэтому перемещаем jar библиотеку в папку lib и подключаем к проекту, в Эклипсе это Project->Preferences->Java Build Path->Libraries->Add Jars… далее во вкладке Order and Export нужно убедиться, что не установлен чекбокс, потому что экспортировать библиотеку нам не нужно, все будет в class файлах.

Теперь берем какой-нибудь класс из декомпилированных исходников приложения, исправляем в нем ошибки компиляции, добавляем, например, показ диалога, чтоб убедиться, что используется именно новый класс. Далее очищаем проект, в Эклипсе это Project->Clean, копируем class файлы в папку bin/classes, собираем проект и все работает!

При следующих сборках проекта нет необходимости его очищать, так что использовать такой способ достаточно удобно. Для облегчения исправления ошибок после декомпиляции я использовал исходники полученные из JD-GUI и JAD, обычно этого было достаточно.

Но вот пришло время собрать релизную версию, а для нее, конечно же, используется обфускатор и выдаст он сотни ошибок на совпадения имен классов и неразрешенные ссылки. Вот теперь пора убрать из скомпилированных class файлов классы, которые были заменены, после этого ошибок не должно быть. Еще одна неприятная особенность сборки релиза — нужно каждый раз очищать проект и копировать class файлы, а то они куда-то пропадают.

Заключение

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

С большой вероятностью не получится скрыть все следы от оригинального приложения, названия необфусцированных классов таких как Activity и Service, а так же названия их пакетов сохранятся и будут доступны после декомпиляции модифицированного приложения, но для пиратских версий это не проблема, из-за чего стоит защищать приложение, способы защиты аналогичны другим способам защиты от изменения кода.

Обновление классов в jar — идея замены классов пришла из этой возможности для jar библиотеки.

Как создать APK-файл в Android Studio

Для того чтобы установка нового мобильного приложения под управлением Android выполнялась легко и быстро, программные файлы и папки упаковывают в один исполняемый документ. В статье подробно описано, что такое Android Studio, как создать APK файл в Android Studio.

Что такое АПК файл

Современные программы, как правило, состоят из десятков документов и папок, которые требуют много места. В интегрированной среде разработки Android Studio, работающей под Windows, OS X и Linux, предусмотрен сервис компиляции программ для платформы Android. В результате получается один упакованный исполняемый файл формата AndroidPackageKit (APK), обеспечивающий установку приложения с необходимыми библиотеками и ресурсами. В процессе распаковки пользователь выбирает полную установку либо распаковку отдельных компонентов. Второй вариант, как правило, выбирают разработчики для дальнейшего просмотра и редактирования программы.

Как создать файл APK

Так как для программирования часто используется Java, среда Android SDK у разработчика, скорее всего, уже есть на компьютере. SDK используется для нахождения и устранения ошибок в программе и должна быть установлена перед компиляцией, так как Android Studio для создания .apk использует компоненты этой среды.

Рассмотрим применительно к Android Studio, как сделать apk документ. В среде AndroidStudio компиляция apk может быть выполнена двумя способами: вручную и автоматически.

Где лежит АПК файл

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

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

В Android файлы приложений, загруженные из GooglePlay или скачанные с сайта разработчика, хранятся в папке /data/app. Если требуется извлечь файл .apk из установленного приложения, можно использовать менеджер файлов или специальную программу APK Extractor (программа доступна для загрузки в GooglePlay). Если для хранения приложений используется карта памяти, чтобы найти в Android Studio, где лежит APK, нужно проверить папку /mnt/asec/APPNAME/pkg.apk.

Запуск компиляции вручную

Далее необходимо в Android Studio перейти на вкладку «Build», затем – «GenerateSigned APK». Как подписывать АПК файлы? Можно перейти в сценарий, где изменятся настройки подписи (build.gradle). Сгенерированные подписи хранятся в соответствующих файлах.

После окончания сборки появится окно с кнопкой «Locate», которая показывает в Android Studio где находится АПК файл. Найти его можно по имени, одинаковому с именем создаваемого проекта. Например, если проект называется MyProject, документы будут лежать в разделе

MyProject/…

В зависимости от издания Android Studio полученный документ формата .apk размещен в директориях

MyProject/build/apk/...

MyProject/build/outputs/apk.

Запуск автоматической компиляции

Рассмотрим теперь, как в Android Studio собрать apk программным способом.

В Android Studio формирование АПК запускается кнопкой «Run», которая активизирует работу команды «assembleRelease», предварительно помещенную в настройки проекта.

При использовании данного способе создания исполняемого файла нет необходимости каждый раз вводить реквизиты доступа и подписывать документ вручную. Сведения о подписи добавляются в файл сценария. В настройки проекта добавляется команда «assembleRelease», которая запускается кнопкой «Run», как и другие команды. В результате автоматической компиляции в разделе build/apk/ появятся два файла: <Имя>-release-u unaligned.apk и <Имя>-release.apk. Они отличаются тем, что в первом случае документ содержит подпись, но не выровнен. А во втором случае – представляет собой готовый дистрибутив, который после смены имени на коммерческое подлежит свободному распространению.

В помощь новичкам: на youtube содержатся видео с подробным описанием как создать АПК файл в Android Studio. Например, первый урок:

Упаковка APK приложения и подпись (компиляция apk и подпись)



Открываем Smartapktool – переходим в Распаковать/Запаковать, выбираем запаковать и ставим галочку на подписать приложение, нажимаем обзор переходим к папке с распакованным приложением и выбираем файл apktool.yml, нажимаем 'Запаковать и подписать'

после подписи ваше приложение будет находиться в папке sign рядом с программой Smartapktool.exe и иметь название sign_name.apk . Или просто 'Запаковать' тогда в (декомпилированном приложение) папке разобранного приложения будут созданы папки build и dist, в папке dist будет собранный apk (то что нам нужно), в папке build содержимое этого apk.

Если Вы сразу не подписали а решили позже ,то нужно забросить приложение в папку sign и подписать программой SmartApkTool.exe на вкладке 'Подписать'.

Статьи по теме APK:


 

Разборка (декомпиляция) APK файла с помощью Apktool



Вам понадобится программа Apktool и Java. Файл, который будете разбирать (в нашем случае (smart.apk)

Установка Apktool на компьютер

Скачиваем и Устанавливаем Java. Скачиваем ApkTool (apktool1.4.3.tar.bz2 и apktool-install-windows-r04-brut1.tar.bz2) и распаковываем в директорию С:\Windows\

Для запуска Apktool нужно нажать сочетание клавиш Win+R

Пишем cmd - переходим в командную строку и пишем apktool.
Весь процесс происходит в командной строке.

Но сделать иначе, есть графический интерфейс ApkTool с названием Smartapktool. Скачиваем приложение Smartapktool (ссылка скачать внизу статьи) распаковываем его в папку. Очень важно, чтобы файлы apktool лежали в папке Windows, не путать с Smartapktool. Запускаем интерфейс SmartApkTool.exe и переходим в меню Распаковать/Запаковать. Выбирайте Ваше приложение ~name .apk (Важно! Отсутствие пробелов, кириллицы, знаков препинания).

После распаковки приложения вы обнаружите рядом папку с таким же названием.

Статьи по теме APK:



Разборка (декомпиляция) APK файла с помощью Apktool



Вам понадобится программа Apktool и Java. Файл, который будете разбирать (в нашем случае (smart.apk)

Установка Apktool на компьютер

Скачиваем и Устанавливаем Java. Скачиваем ApkTool (apktool1.4.3.tar.bz2 и apktool-install-windows-r04-brut1.tar.bz2) и распаковываем в директорию С:\Windows\

Для запуска Apktool нужно нажать сочетание клавиш Win+R

Пишем cmd - переходим в командную строку и пишем apktool.
Весь процесс происходит в командной строке.

Но сделать иначе, есть графический интерфейс ApkTool с названием Smartapktool. Скачиваем приложение Smartapktool (ссылка скачать внизу статьи) распаковываем его в папку. Очень важно, чтобы файлы apktool лежали в папке Windows, не путать с Smartapktool. Запускаем интерфейс SmartApkTool.exe и переходим в меню Распаковать/Запаковать. Выбирайте Ваше приложение ~name .apk (Важно! Отсутствие пробелов, кириллицы, знаков препинания).

После распаковки приложения вы обнаружите рядом папку с таким же названием.

Статьи по теме APK:


 

android - Как скомпилировать APK из исходного кода GitHub

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

android - Как заново скомпилировать содержимое, извлеченное apk, в файл apk после внесения в него изменений?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
.

Как создать apk файл для android?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

как скомпилировать вспомогательный файл в проекте Android?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

android - Как скомпилировать файлы kivy и python в apk

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

Как изменить скомпилированное приложение Android (файл .apk)

Сегодня я хотел бы поделиться с вами своими выводами о том, как можно изменить существующий файл .apk.

Файл .apk представляет мобильное приложение, установленное на мобильном устройстве, таком как смартфон, планшет, носимое устройство и т. Д.

Такой файл .apk представляет собой простой архив, который можно открыть любым упаковщиком, например WinRAR

Таким образом, вы можете легко открыть его и просмотреть файлы - хотя просмотр большинства файлов вас не порадует, потому что вы поймете, что они скомпилированы в двоичном формате и т. Д.

… но это отдельная история.

В любом случае, вы можете открыть архив, а затем изменить любой файл ресурсов и сохранить изменение в архиве.

Но если вы потом попытаетесь установить .apk на смартфон (или планшет или аналогичный), вы получите ошибку.

На следующем снимке экрана показана ошибка при установке модифицированного образца приложения myApp.apk на устройстве Android:

Причина в том, что после модификации чексу

.

Смотрите также