¿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:
- Actualización del proyecto a Android Studio 1.0 (problemas de Gradle)
- ¿Cuáles son los tipos de piel en Android Studio?
- No se puede actualizar desde la versión 2.1.1 a la vista previa 2.2 en el estudio android
- Android Studio se bloquea y congela después de crear / ejecutar
- Cómo portar un proyecto de estudio de android desde linux a windows
- 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.
- Android Studio 64-bit ERROR: Linux de 32 bits Los binarios del emulador de Android son DEPRECATED
- -App tomar 30 segundos para el inicio después de usar la nueva función de ejecución instantánea en android estudio 2.0?
- Error: Error de ejecución para la tarea ': app: transformJackWithJackForDebug'
- App forcecloses en la actividad de inicio de Facebook
- Android Studio no genera apk firmado después de la actualización a 2.3
- Android Error Clase ref en clase pre-verificada resuelta a implementación inesperada
- El dispositivo Android no está conectado a USB para depurar (Android studio)
- Liberar memoria de una actividad particular cuando se destruye
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.
- Pase una cadena de una actividad a otra en Android
- La integración de twitter en la aplicación para Android