- PVSM.RU - https://www.pvsm.ru -
Jack (Java Android Compiler Kit) – это компилятор, преобразующий исходный код на Java в DEX-файлы Android. Jack – это набор инструментов, среди его возможностей – переупаковка, сжатие, обфускация и поддержка множественных DEX-файлов.
В Jack используются промежуточные библиотеки в формате .jack. Преобразованием существующих .aar/.jar файлов в этот формат занимается Jill (Jack Intermediate Library Linker).
Если для сборки используется Jack, то сначала Jill конвертирует внешние библиотеки, используемые в проекте, в .jack-файлы. Это подготавливает библиотеки к быстрому слиянию с другими .jack-файлами на следующем этапе, когда Jack и плагин Android Gradle, используя подготовленные ранее.jack-файлы и исходный Java-код, компилируют DEX-файл (или файлы). В ходе этого процесса Jack может выполнить минификацию кода (сжатие, обфускацию, или и то и другое вместе). На выходе получается APK-файл Android-приложения.
Процесс сборки приложения с использованием Jack и Jill
Jack и Jill доступны в Build Tools для Android Studio начиная с версии 21.1.1. Плагин Android Gradle поддерживает эти инструменты, начиная с версии 1.0.0. Для того чтобы задействовать возможности Jack, достаточно добавить в файл build.gradle команду useJack=true.
Android SDK Manager
Узнать подробности о работе с Jack и Jill можно с помощью команд, приведённых ниже. Здесь мы пользуемся стандартным интерфейсом командной строки Windows, библиотеками Jack и Jill, включёнными в состав Android Build Tools версии 23.0.2.
Некоторые возможности этих инструментов могут быть доступны из командной строки раньше, чем их поддержка будет включена в плагин Android Gradle.
Итак, вот команда для получения справки по Jack:
java –jar <Android SDK>/build-tools/< Build Tools version>/jack.jar ––help
Её выполнение даёт нам следующее:
Справка по Jack
А вот так можно поближе познакомиться с Jill:
java –jar <Android SDK>/build-tools/< Build Tools version>/jill.jar ––help
Справка по Jill
Прежде чем приступать к работе с Jack, стоит учесть, что он поддерживает язык программирования Java 1.7. и не поддерживает обработку аннотаций.
При использовании Jack, ему можно передавать конфигурационные файлы Proguard с помощью параметра командной строки ––config-proguard. Если говорить о переупаковке, то Jack совместим с правилами типа «rule», но не с правилами типа «zap» или «keep». Файлы правил можно указывать в командной строке с использованием параметра –– config-jarjar.
Поддержка Jack плагином Android Gradle всё ещё в процессе разработки, поэтому стоит учесть следующие особенности и ограничения:
dexOptions { javaMaxHeapSize "2048M" }
Попробуем Jack в деле.
Для начала нам понадобится какой-нибудь проект приложения для экспериментов. Например, импортируем из каталога примеров проект Hello JNI. Для этого выполним в Android Studio команду File > New > Import Sample. В появившемся окне найдём проект Hello JNI, и, выделив его название, нажмём на кнопку Next.
Проект Hello JNI для импорта
В следующем окне имя приложения (поле Application name) и путь к новому проекту (Project location) менять не будем, и, для завершения импорта, нажмём на кнопку Finish.
Если в ходе импорта появится сообщение о том, что системе не удаётся найти NDK (Android NDK Location is not specified), исправьте это, щёлкнув по ссылке Select NDK и указав в открывшемся окне путь к NDK. Этот путь будет записан в файл local.properties в виде ndk.dir=<path_to_ndk>.
После успешного импорта проекта найдём в режиме просмотра Project, в папке app, файл build.gradle и добавим в defaultConfig.with команду включения jack (useJack = true):
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.2"
defaultConfig.with {
applicationId = "com.example.hellojni"
minSdkVersion.apiLevel = 4
targetSdkVersion.apiLevel = 23
useJack = true
}
}
Теперь испытаем работу системы на планшете Asus Fonepad 8 (CPU Intel Atom Z3530, Android 5.0).
Тестовое приложение на x86-устройстве
Каждый, кто занимался разработкой приложений, знает, что в этом деле на счету каждая секунда. Одна из важных особенностей Jack – это сокращение времени компиляции [2], а значит – повышение производительности труда. Кроме того, Jack по умолчанию используется в Android M. Пожалуй, только этих двух фактов достаточно для того, чтобы сделать Jack и Jill желанными гостями в доме любого программиста.
Автор: Intel
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/111784
Ссылки в тексте:
[1] Image: https://habrahabr.ru/company/intel/blog/276881/
[2] сокращение времени компиляции: https://source.android.com/source/jack.html
[3] Источник: https://habrahabr.ru/post/276881/
Нажмите здесь для печати.