¿Cómo realizar la minificación y ofuscación con el compilador JACK?

Google ha lanzado una versión de prueba de su nuevo compilador JACK para desarrolladores de Android con Android Studio 2.1.

Mi pregunta es, ¿cómo podemos habilitar la ofuscación para el APK con JACK? El artículo siguiente dice que JACK realiza obfuscation nativamente y elimina la necesidad de Proguard:

  • Compilación con Jack

Mientras que el siguiente artículo dice que JACK hace uso de archivos de configuración Proguard (es decir, el archivo .pro ) para realizar ofuscación:

  • Experimental Nueva cadena de herramientas Android – Jack y Jill .

También dice que

Durante este proceso Jack también maneja cualquier minificación de código solicitada (encogimiento y / o ofuscación ).

¿Qué significa esto exactamente? ¿Tenemos que usar la opción minifyEnabled y definir un archivo .pro que contenga las opciones Proguard?

En resumen:

  • ¿Cómo exactamente vamos a permitir la ofuscación con JACK? ¿Podemos evitar el uso de Proguard, o Proguard desempeña un papel de facto en el proceso de ofuscación, incluso si compilamos con JACK?

  • ¿JACK actualmente apoya la ofuscación o no, y está disponible en una versión estable (es decir, no beta / canario) de Android Studio?

Nota:

Ya he referido las siguientes publicaciones:

  • Cómo activar Jack (Java Android Compiler Kit) en el estudio de Android .

  • Error: Se requiere que Jack tenga soporte para características de lenguaje java 8 .

Referencias adicionales:

  • Una introducción a Jack y Jill en X86 .

  • El lado oscuro de Jack y Jill .

  • Características del lenguaje Java 8 .

Actualizar:

La respuesta de Matt Insko es útil, pero me gustaría más detalles y una respuesta más precisa y canónica.

La aparición de JACK no parece estar soportada en el último Plugin Gradle publicado (v2.1.0).

Si habilita JACK al usar el último complemento v2.1.0, le indicará que Jack requires Build Tools 24.0.0 or later requieren que utilice las herramientas de vista previa.

Utilizando android gradle v2.2.0-alpha1, Herramientas de compilación-v24rc4, Herramientas de plataforma-v24rc3 y Herramientas de Sdk-v25.1.7rc1 Pude conseguir que la ofuscación fuese realizada por JACK.

Cuando se activa dentro de defaultConfig se quejó Minifying the variant used for tests is not supported when using Jack. , Porque minifyEnabled true se configuró en la compilación de debug .

Por lo tanto, creé un tipo de compilación personalizado y lo habilité allí:

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

Se produjo un problema al utilizar proguardFiles getDefaultProguardFile('proguard-android.txt') . Errorred con: com.android.jack.api.v01.ConfigurationException: Error while parsing ... ,. Por lo tanto, acabo de eliminar las líneas que se quejó y, a continuación, sólo especificó manualmente mi archivo de configuración modificada.

Puedes echar un vistazo aquí: https://source.android.com/source/jack.html

De la documentación oficial:

(Jack) Manejo de encogimiento, ofuscación, reempaquetado y multidex. El uso de un paquete separado, como ProGuard, ya no es necesario.

Por favor note especialmente la sección "Encogimiento y Ofuscación" donde se menciona que:

Jack tiene el apoyo de encogimiento y ofuscación y utiliza archivos de configuración proguard para permitir características de encogimiento y ofuscación.

Y también las opciones apoyadas e ignoradas se presentan también.

  • Método no compatible: InstantRun.getRestartDexFile () - Android Studio
  • Actualizar los servicios de reproducción de Google en Emulator
  • No se pudo resolver: com.android.support:customtabs:
  • NavigationView (Cambiar color del elemento seleccionado)
  • ¿Por qué Android Studio no creará mi archivo AAR en modo de liberación?
  • ¿Qué es el <module> /release/output.json generado por Android Studio
  • Android Studio - con Junit 4.12 "!!! JUnit versión 3.8 o posterior esperado: "
  • Gradle 0.9. + / 0.9.2 error: No se puede cargar la clase 'com.android.builder.testing.api.DeviceProvider'
  • Teclado Android Ajustar Redimensionar
  • El depurador de Android Studio no se detiene en puntos de interrupción dentro de módulos de biblioteca
  • ¿Hay alguna manera de mostrar una vista previa del contenido de RecyclerView en el editor de Android Studio?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.