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:
-
Comment faire pour activer la prise Jack (Java Android Kit Compilateur) dans android studio .
-
erreur: Jack est nécessaire pour supporter les fonctionnalités de langage java 8 .
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.
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é.
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.