Android: новый экспериментальный инструмент Jack and Jill

Jack and Jill

Типичный процесс сборки с помощью Jack and Jill

Google работает над новым набором инструментов для разработки под Android, который позволит сократить время сборки проекта, а так же уменьшить зависимости между другими инструментами. Были представлены Jack (Java Android Compiler Kit) and Jill (Jack Intermediate Library Linker) — два новых инструмента.

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

Как это работает?

Когда новый пакет подключен, Jill будет переводить все библиотеки, на которые вы ссылаетесь, в новый формат Jack (.jack). Этот процесс подготавливает их для сдияния с другими .jack файлами. Gradle и Jack собирает все .jack библиотечные файлы вместе с исходным кодом, затем компилирует их в набор DEX-файлов. В процессе Jack также обрабатывает запросы на минификацию кода. На выходе получаем всё тот же APK. Google также добавили поддержку нескольких файлов DEX, если вы включили такую возможность.

Как же это использовать?

Jack и Jill уже доступны в 21.1.1+ версии инструментов для Android Studio. Дополнительная поддержка Gradle доступна в Android Gradle плагине версии 1.0.0+ . Для начала, все, что вам нужно сделать, это убедиться, что вы используете эти версии плагинов, а затем добавить одну строку в вашем файле build.gradle. Билдим проект и получаем новенький APK.

 android {
    ...
    buildToolsRevision '21.1.1'
    defaultConfig {
      // Включаем экспериментальный Jack build.
      useJack = true
    }
    ...
}

Если вы хотите собрать приложение с обоими пакетами, Product Flavors отличный способ, чтобы сделать это. Ваш build.gradle файл может выглядеть примерно так:

 android {
android {
    ...
    productFlavors {
        dev {
            ...
        }
        experimental {
            useJack = true
        }
        prod {
            ...
        }
    }
    ...
}

Как настроить сборку?

Google реализуют переход к Джеку как можно более гладко, поддерживая минификацию, переупаковку (как в jarjar), в том время как на входе те же самые файлы, что и раньше. Минификация доступна в Gradle сразу же. Вы должны продолжать использовать директиву «minifyEnabled true», чтобы уменьшить размер вашего приложения помимо всех других оптимизаций, который вы обычно используете. Более подробную информацию относительно уровня поддержки для каждого типа оптимизации можно посмотреть тут.