web-dev-qa-db-fra.com

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

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

Ma question est, comment pouvons-nous activer l'obfuscation pour l'APK avec JACK? L'article ci-dessous indique que JACK effectue l'obfuscation nativement et élimine le besoin de Proguard:

Alors que l'article suivant indique que JACK utilise les fichiers de configuration de Proguard (c'est-à-dire le .pro fichier) pour effectuer l'obfuscation:

Il dit également que

Au cours de ce processus, Jack gère également toute minification de code demandée (rétrécissement et/ou obfuscation ).

Qu'est-ce que cela veut dire exactement? Faut-il utiliser l'option minifyEnabled et définir un .pro fichier contenant les options de Proguard?

En résumé:

  • Comment pouvons-nous exactement activer l'obfuscation avec JACK? Peut-on contourner l'utilisation de Proguard, ou Proguard joue-t-il un rôle de facto dans le processus d'obscurcissement, même si nous compilons avec JACK?

  • JACK prend-il actuellement en charge l'obfuscation ou non, et est-il disponible dans une version stable (c'est-à-dire non bêta/canari) de Android Studio?

Remarque:

J'ai déjà référé les articles suivants:

Autres références:

Mise à jour:

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

36
Y.S

JACK. l'obfuscation ne semble pas être prise en charge dans le dernier plug-in Gradle (v2.1.0).

Si vous activez JACK lors de l'utilisation du dernier plugin v2.1.0, il vous indiquera Jack requires Build Tools 24.0.0 or later Vous obligeant à utiliser les outils de prévisualisation.

En utilisant Android gradle v2.2.0-alpha1, Build Tools-v24rc4, Platform Tools-v24rc3 et Sdk Tools-v25.1.7rc1, j'ai pu obtenir l'obscurcissement à effectuer par JACK.

Lorsqu'il était activé dans defaultConfig, il se plaignait Minifying the variant used for tests is not supported when using Jack., Car minifyEnabled true Était configuré dans la version debug.

J'ai donc créé un type de build personnalisé et je l'ai activé là:

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

Un problème est survenu lors de l'utilisation de proguardFiles getDefaultProguardFile('proguard-Android.txt'). Il s'est écrasé avec: com.Android.jack.api.v01.ConfigurationException: Error while parsing ...,. Donc, je viens de supprimer les lignes dont il se plaignait, puis de spécifier manuellement mon fichier de configuration modifié.

9
Matt Insko

Vous pouvez jeter un oeil ici: https://source.Android.com/source/jack.html

De la documentation officielle:

(Jack) Gère le rétrécissement, l'obscurcissement, le reconditionnement et le multidex. L'utilisation d'un package séparé tel que ProGuard n'est plus nécessaire.

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

Jack prend en charge le rétrécissement et l'obscurcissement et utilise les fichiers de configuration proguard pour activer les fonctionnalités de rétrécissement et d'obscurcissement.

Et les options prises en charge et ignorées sont également présentées.

2