Quantcast
Channel: Статьи Intel Developer Zone
Viewing all articles
Browse latest Browse all 357

Знакомьтесь: Jack и Jill на платформе x86

$
0
0

Download PDF

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 and Jill App Build

Процесс сборки приложения с использованием Jack и Jill

Jack и Jill доступны в Build Tools для Android Studio начиная с версии 21.1.1. Плагин Android Gradle поддерживает эти инструменты, начиная с версии 1.0.0. Для того чтобы задействовать возможности Jack, достаточно добавить в файл build.gradle команду useJack=true.

Jack and Jill App Build

Android SDK Manager

Использование командной строки

Узнать подробности о работе с Jack и Jill можно с помощью команд, приведённых ниже. Здесь мы пользуемся стандартным интерфейсом командной строки Windows, библиотеками Jack и Jill, включёнными в состав Android Build Tools версии 23.0.2.
Некоторые возможности этих инструментов могут быть доступны из командной строки раньше, чем их поддержка будет включена в плагин Android Gradle.

Итак, вот команда для получения справки по Jack:

  • java –jar <SDK>/build-tools/< Build Tools version>/jack.jar –help

Jack &amp; Jill command lines

Справка по Jack

А вот так можно поближе познакомиться с Jill:

  • java –jar <SDK>/build-tools/< Build Tools version>/jill.jar –help

Jack &amp; Jill command lines

Справка по Jill

Некоторые особенности Jack

Прежде чем приступать к работе с Jack, стоит учесть, что он поддерживает язык программирования Java 1.7. и не поддерживает обработку аннотаций.

При использовании Jack, ему можно передавать конфигурационные файлы Proguard с помощью параметра командной строки ––config-proguard. Если говорить о переупаковке, то Jack совместим с правилами типа «rule», но не с правилами типа «zap» или «keep». Файлы правил можно указывать в командной строке с использованием параметра –– config-jarjar.

Поддержка Jack плагином Android Gradle всё ещё в процессе разработки, поэтому стоит учесть следующие особенности и ограничения:

  • Директива обфускации –applymapping ещё не поддерживается.
  • Возможность переупаковки (вроде инструмента jarjar) пока не интегрирована.
  • Средство Jacoco не поддерживается.
  • Манипуляции с байт-кодом не поддерживаются.
  • В некоторых случаях, при сборке очень больших приложений, можно столкнуться с исключением Out Of Memory. Справиться с проблемой можно, если настроить систему сборки на использование, как минимум, 2 Гб оперативной памяти:

dexOptions { javaMaxHeapSize"2048M" }

Попробуем Jack в деле.

Работа с Jack

Для начала нам понадобится какой-нибудь проект приложения для экспериментов. Например, импортируем из каталога примеров проект Hello JNI. Для этого выполним в Android Studio команду File > New > Import Sample. В появившемся окне найдём проект Hello JNI, и, выделив его название, нажмём на кнопку Next.

Проект Hello JNI для импорта

android {        

compileSdkVersion = 23

  buildToolsVersion = "23.0.2"

       

defaultConfig.with {.with {            

  applicationId = "com.example.hellojni"           

minSdkVersion.apiLevel = 4           

targetSdkVersion.apiLevel = 23           

  useJack = true       

}    

}

Теперь испытаем работу системы на планшете Asus Fonepad 8 (CPU Intel Atom Z3530, Android 5.0).

BUILD SUCCESSFUL
Тестовое приложение на x86-устройстве

Итоги


Каждый, кто занимался разработкой приложений, знает, что в этом деле на счету каждая секунда. Одна из важных особенностей Jack – это сокращение времени компиляции, а значит – повышение производительности труда. Кроме того, Jack по умолчанию используется в Android M. Пожалуй, только этих двух фактов достаточно для того, чтобы сделать Jack и Jill желанными гостями в доме любого программиста.


Viewing all articles
Browse latest Browse all 357

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>