Как выполнить минимизацию и обфускацию с помощью компилятора JACK?

Google выпустила тестовую версию своего нового компилятора JACK для разработчиков Android с Android Studio 2.1.

Мой вопрос: как мы можем включить обфускацию для APK с помощью JACK? В следующей статье говорится, что JACK выполняет обфускацию изначально и устраняет необходимость в Proguard:

В то время как в следующей статье говорится, что JACK использует файлы конфигурации Proguard (т.е. файл .pro) для выполнения обфускации:

В нем также говорится, что

Во время этого процесса Джек также обрабатывает любую запрошенную классификацию кода (сокращение и/или обфускация).

Что именно это означает? Нужно ли использовать параметр minifyEnabled и определить файл .pro, содержащий параметры Proguard?

В резюме:

  • Как именно мы собираемся включить обфускацию с помощью JACK? Можем мы обойти использование Proguard, или Proguard играет де-факто роль в процесс обфускации, даже если мы скомпилируем JACK?

  • В настоящее время JACK поддерживает обфускацию или нет, и доступно ли она в стабильной (т.е. не бета/канарейке) версии Android Studio?

Примечание:

Я уже упоминал следующие сообщения:

Дополнительные ссылки:

Update:

answer Matt Insko полезен, но я хотел бы получить более подробную информацию и более точную, канонический ответ.

Ответ 1

J.A.C.K. obfuscation, похоже, не поддерживается в последнем выпущенном плагине Gradle (v2.1.0).

Если вы включите JACK при использовании последнего плагина v2.1.0, он скажет вам, что Jack requires Build Tools 24.0.0 or later требует использования инструментов предварительного просмотра.

Использование android Gradle v2.2.0-alpha1, Build Tools-v24rc4, Platform Tools-v24rc3 и Sdk Tools-v25.1.7rc1 Мне удалось выполнить обфускацию с помощью JACK.

Когда включено внутри defaultConfig, он жаловался Minifying the variant used for tests is not supported when using Jack., потому что minifyEnabled true был настроен в сборке debug.

Итак, я создал пользовательский тип сборки и включил его:

buildTypes {
    ...
    custom {
        minifyEnabled true
        proguardFiles 'proguard-android-JACK.txt-2.2.0-alpha1'
        jackOptions {
            enabled true
        }
    }

При использовании proguardFiles getDefaultProguardFile('proguard-android.txt') возникла проблема. Это ошибка: com.android.jack.api.v01.ConfigurationException: Error while parsing ...,. Итак, я просто удалил строки, на которые он жаловался, а затем просто указал вручную измененный файл конфигурации.

Ответ 2

Вы можете посмотреть здесь: https://source.android.com/source/jack.html

Из официальной документации:

(Jack) Ручки сжимаются, обфускация, переупаковка и мультидекс. Используя отдельный пакет, такой как ProGuard, больше не нужен.

Обратите особое внимание на раздел "Сокращение и обфускация", в котором упоминалось, что:

У Джека есть поддержка сжатия и обфускации и используется proguard файлы конфигурации, чтобы включить функции сжатия и обфускации.

Также представлены также поддерживаемые и проигнорированные опции.