36

Google hat eine Testversion ihres neuen JACK compiler für Android-Entwickler mit Android Studio 2.1 veröffentlicht.Wie führt man die Verkleinerung und Verschleierung mit dem JACK-Compiler durch?

Meine Frage ist, wie ermöglichen wir die Verschleierung für die APK mit JACK? Der folgende Artikel sagt, dass JACK Verschleierungs führt nativ und eliminiert die Notwendigkeit für Proguard:

Während der folgenden Artikel sagt, dass JACK Verwendung von Proguard Konfigurationsdateien (dh die .pro Datei) macht zur Durchführung der Verschleierung:

Er sagt auch, dass

Während dieses Prozesses Jack übernimmt auch jeder Code minification angefordert (Schrumpfung und/oder Verschleierungs).

Was genau bedeutet das? Müssen wir die minifyEnabled Option verwenden und eine .pro Datei definieren, die die Proguard Optionen enthält?

In Zusammenfassung:

  • Wie genau gehen wir über das Aktivieren der Verschleierung mit JACK? Können wir umgehen die Verwendung von Proguard, oder spielt Proguard eine de-facto Rolle in der Verschleierungsprozess, auch wenn wir mit JACK kompilieren?

  • Unterstützt JACK derzeit Obfuscation oder nicht, und ist es in einer stabilen (d. H. Nicht-beta/kanarienvogel-) Version von Android Studio verfügbar?

Hinweis:

Ich habe bereits erwähnten die folgenden Beiträge:

Weitere Referenzen:

Update:

Die answer von Matt Insko ist hilfreich, aber ich würde ausführlicher mag, und eine genauere, kanonische Antwort.

+0

Diese [post] (http://www.androidpolice.com/2014/11/30/jack-and-jill-are-googles-new-compilers-for-android-app-developers/) könnte hilfreich sein . Wenn Sie diese [link] (http://tools.android.com/tech-docs/jackandjill) sehen, gibt es eine Option zum Übergeben von Proguard-Dateien wie '--config-proguard' –

+0

Also die Verwendung der Befehlszeile ist hier die einzige Option ? Und wie genau bauen wir mit JACK von der Kommandozeile aus? –

+0

Ya, ich habe es mit dem CLI versucht. Es funktioniert gut. Diese Information wird [hier] erwähnt (https://software.intel.com/en-us/android/articles/an-introduction-to-jack-and-jill-on-x86) und [hier] (https: //gist.github.com/stefanhoth/593451dfb4576ec9a21c) –

Antwort

9

J.A.C.K. Die Verschleierung scheint im neuesten veröffentlichten Gradle-Plugin (v2.1.0) nicht unterstützt zu werden.

Wenn Sie JACK aktivieren, wenn Sie das neueste v2.1.0-Plugin verwenden, wird Ihnen Jack requires Build Tools 24.0.0 or later mitgeteilt, dass Sie die Vorschau-Tools verwenden müssen.

Verwenden von Android Gradle v2.2.0-alpha1, Build-Tools-v24rc4, Platform Tools-v24rc3 und Sdk Tools-v25.1.7rc1 Ich konnte Obfuscation von JACK durchgeführt werden.

Wenn innerhalb defaultConfig aktiviert wurde, beschwerte es Minifying the variant used for tests is not supported when using Jack., weil minifyEnabled true im debug Build konfiguriert wurde.

So habe ich eine benutzerdefinierte Build-Typ und aktivieren, damit Sie es:

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

Es war ein Problem, wenn proguardFiles getDefaultProguardFile('proguard-android.txt') verwenden. Es ist fehlerhaft mit: com.android.jack.api.v01.ConfigurationException: Error while parsing ...,. Also habe ich nur die Zeilen entfernt, über die es sich beschwert hat, und dann meine modifizierte Konfigurationsdatei manuell angegeben.

+0

Hallo, wie hast du gearbeitet AS beschwert, dass die aktuelle Konfiguration (benutzerdefinierte) nicht unterzeichnet ist? – galaxigirl

2

Sie einen Blick hier haben: https://source.android.com/source/jack.html

Von der offiziellen Dokumentation:

(Jack) Griffe schrumpfen, Verschleierung, Neuverpackung und multidex. Mit einem separaten Paket wie ProGuard ist nicht mehr notwendig.

Bitte beachten Sie insbesondere den Abschnitt „Schrumpfende und Verschleierung“, wo es erwähnt, dass:

Jack hat schrumpfen und Verschleierung Unterstützung und nutzt proguard Konfigurationsdateien schrumpfen und Verschleierung Funktionen zu aktivieren.

Und auch die unterstützten und ignorierten Optionen werden ebenfalls vorgestellt.

+3

Danke, aber Sie erklären nicht, wie genau wir das machen. Ich habe auch diesen Artikel gelesen (und referenziert), und es ist ziemlich kryptisch und vage, wie genau die Verschleierung erfolgt. Wenn du es ausprobieren kannst und mehr Details zur Verfügung stellst (wenn es funktioniert), wäre ich dankbar .... danke :) –

Verwandte Themen