Comment effectuer la minification et l'obfuscation avec le compilateur JACK?

Google a publié une version de test de leur nouveau compilateur JACK pour les développeurs Android avec Android Studio 2.1.

ma question Est, Comment Pouvons-nous permettre l'obfuscation pour L'APK avec JACK? L'article ci-dessous dit que JACK effectue l'obfuscation nativement et élimine le besoin de Proguard:

alors que L'article suivant dit que JACK utilise les fichiers de configuration Proguard (c'est-à-dire le fichier .pro ) pour effectuer une obfuscation:

Elle dit aussi que

au cours de ce processus, Jack manipule aussi toute code demandé minification (rétrécissement et/ou obfuscation ).

Qu'est-ce que cela signifie exactement? Devons-nous utiliser l'option minifyEnabled et définir un fichier .pro contenant les options Proguard?

En Résumé:

  • " Comment faire exactement pour permettre L'obscurcissement avec JACK? Pouvons-nous contourner l'utilisation de Proguard, ou est-ce que Proguard joue un rôle de fait dans le processus d'obscurcissement, même si on compile avec JACK?

  • N'est PRISE en charge actuellement de dissimulation ou non, et est-il disponible dans une version stable (i.e. non-beta/canary) D'Android Studio?

Note:

j'ai déjà mentionné les postes suivants:

Autres Références:

mise à Jour:

Le réponse par Matt Insko est utile, mais je voudrais plus de détails, et une réponse plus précise, canonique.

36
demandé sur Y.S. 2016-05-19 08:44:02

2 réponses

J. A. C. K. obfuscation ne semble pas être pris en charge dans la dernière version Plugin Gradle (v2.1.0).

si vous activez JACK lors de l'utilisation de la dernière v2.1.0 plugin, il vous indiquera Jack requires Build Tools 24.0.0 or later nécessitant l'utilisation des outils de prévisualisation.

sur android gradle v2.2.0-alpha1, Build Tools-v24rc4, Platform Tools-v24rc3, et Sdk Tools-v25.1.7rc1 I was able to get obfuscation to be performed by JACK.

quand activé à l'intérieur de defaultConfig il s'est plaint Minifying the variant used for tests is not supported when using Jack. , parce que minifyEnabled true a été configuré dans le debug construire.

donc, j'ai créé un type de construction personnalisé et je l'ai activé là:

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

il y a eu un problème lors de l'utilisation de proguardFiles getDefaultProguardFile('proguard-android.txt') . Il a erré avec: com.android.jack.api.v01.ConfigurationException: Error while parsing ... ,. Donc, j'ai juste enlevé les lignes dont il se plaignait et j'ai juste spécifié manuellement mon fichier de configuration modifié.

9
répondu Matt Insko 2016-05-24 18:28:21

vous pouvez jeter un oeil ici: https://source.android.com/source/jack.html

de la documentation officielle:

(Jack) Poignées de rétrécissement, de dissimulation, de reconditionnement et de multidex. À l'aide d'un paquet séparé comme ProGuard n'est plus nécessaire.

veuillez noter en particulier la section "rétrécissement et obscurcissement" où il est mentionné que:

Jack a le soutien rétrécissement et obfuscation et utilise proguard fichiers de configuration pour activer les fonctions de rétrécissement et d'obscurcissement.

et aussi les options supportées et ignorées sont présentées aussi.

2
répondu Alexios Karapetsas 2016-05-24 18:51:03