36

Google ha rilasciato una versione di prova del loro nuovo JACK compiler per gli sviluppatori Android con Android Studio 2.1.Come eseguire la minimizzazione e l'offuscamento con il compilatore JACK?

La mia domanda è, come abilitare l'offuscamento per l'APK con JACK? L'articolo qui sotto dice che Jack esegue l'offuscamento nativamente ed elimina la necessità di Proguard:

considerando che il seguente articolo dice che Jack fa uso di file di configurazione Proguard (cioè il file .pro) per eseguire l'offuscamento:

Si dice anche che

Durante questo processo Jack si occupa anche di qualsiasi richiesta di codice minification (contrazione e/o offuscamento).

Che cosa significa esattamente questo? Dobbiamo utilizzare l'opzione minifyEnabled e definire un file .pro contenente le opzioni Proguard?

In sintesi:

  • Come esattamente andiamo sull'abilitazione offuscamento con Jack? Possiamo evitare l'uso di Proguard, oppure Proguard ha un ruolo di fatto nel processo nel processo di offuscamento, anche se compiliamo con JACK?

  • JACK attualmente supporta l'offuscamento o meno, ed è disponibile in una versione stabile (ovvero non beta/canarino) di Android Studio?

Nota:

ho già fatto riferimento i seguenti posti:

Ulteriori riferimenti:

Aggiornamento:

Il answer da Matt Insko è utile, ma vorrei più in dettaglio, e una più precisa, risposta canonica.

+0

Questo [post] (http://www.androidpolice.com/2014/11/30/jack-and-jill-are-googles-new-compiler-per-android-app-developers/) potrebbe essere utile . Se vedi questo [collegamento] (http://tools.android.com/tech-docs/jackandjill) c'è un'opzione per passare file proguard come '--config-proguard' –

+0

Quindi usare la linea di comando è l'unica opzione qui ? E in che modo esattamente costruiamo usando JACK dalla riga di comando? –

+0

Ya, ho provato con la CLI. Funziona bene. Queste informazioni sono menzionate [qui] (https://software.intel.com/en-us/android/articles/an-introduction-to-jack-and-jill-on-x86) e [qui] (https: //gist.github.com/stefanhoth/593451dfb4576ec9a21c) –

risposta

9

J.A.C.K. l'offuscamento non sembra essere supportato nell'ultimo rilascio del Gradle Plugin (v2.1.0).

Se si abilita JACK quando si utilizza il plug-in più recente v2.1.0, verrà indicato come Jack requires Build Tools 24.0.0 or later che richiede l'utilizzo degli strumenti di anteprima.

Utilizzo di android gradle v2.2.0-alpha1, Build Tools-v24rc4, Platform Tools-v24rc3 e Sdk Tools-v25.1.7rc1 Sono riuscito a ottenere l'offuscamento da JACK.

Se abilitato all'interno di defaultConfig si è lamentato Minifying the variant used for tests is not supported when using Jack., perché minifyEnabled true è stato configurato nel build debug.

Così, ho creato un tipo di generazione personalizzata e abilitato lì:

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

c'era un problema quando si utilizza proguardFiles getDefaultProguardFile('proguard-android.txt'). Ha errato con: com.android.jack.api.v01.ConfigurationException: Error while parsing ...,. Quindi, ho appena rimosso le righe lamentandosi e poi ho semplicemente specificato manualmente il mio file di configurazione modificato.

+0

Ciao, come hai lavorato in AS lamentando che la configurazione corrente (personalizzata) non è firmata? – galaxigirl

2

Si può avere uno sguardo qui: https://source.android.com/source/jack.html

Dalla documentazione ufficiale:

(Jack) Maniglie contrazione, offuscamento, ricondizionamento e multidex. L'uso di un pacchetto separato come ProGuard non è più necessario.

Si prega di notare in particolare la sezione "Shrinking e offuscamento" dove è detto che:

Jack ha restringimento e il supporto offuscamento e utilizza Proguard file di configurazione per consentire contrazione e di offuscamento caratteristiche.

Vengono visualizzate anche le opzioni supportate e ignorate.

+3

Grazie, ma non spieghi esattamente come andiamo su questo. Anch'io ho letto (e fatto riferimento) quell'articolo, ed è piuttosto criptico e vago su come si fa esattamente l'offuscamento. Se puoi provarlo e fornire ulteriori dettagli (se funziona), ti sarei grato .... grazie :) –

Problemi correlati