Ricerca…


introduzione

Proguard è un programma per la riduzione di file Java, ottimizzatore, offuscatore e preverificatore gratuito. Rileva e rimuove classi, campi, metodi e attributi non utilizzati. Ottimizza bytecode e rimuove le istruzioni inutilizzate. Rinomina le restanti classi, campi e metodi usando nomi brevi e privi di significato.

Riduci il codice e le risorse con proguard

Per rendere il file APK il più piccolo possibile, è necessario abilitare la riduzione per rimuovere il codice e le risorse inutilizzati nella build di rilascio. Questa pagina descrive come farlo e come specificare quale codice e quali risorse tenere o scartare durante la compilazione.

Il restringimento del codice è disponibile con ProGuard, che rileva e rimuove classi, campi, metodi e attributi non utilizzati dall'app pacchettizzata, inclusi quelli delle librerie di codici incluse (rendendolo un valido strumento per aggirare il limite di riferimento a 64k). ProGuard ottimizza anche il bytecode, rimuove le istruzioni inutilizzate del codice e nasconde le restanti classi, campi e metodi con nomi brevi. Il codice offuscato rende il tuo APK difficile da decodificare, il che è particolarmente utile quando l'app utilizza funzionalità sensibili alla sicurezza, come la verifica della licenza.

Il restringimento delle risorse è disponibile con il plug-in Android per Gradle, che rimuove le risorse inutilizzate dall'app pacchettizzata, incluse le risorse inutilizzate nelle librerie di codice. Funziona in combinazione con la riduzione del codice in modo tale che una volta rimosso il codice non utilizzato, tutte le risorse non più referenziate possono essere rimosse in sicurezza.

Riduci il tuo codice

Per abilitare la riduzione del codice con ProGuard , aggiungi minifyEnabled true al tipo di build appropriato nel tuo file build.gradle .

Tieni presente che la riduzione del codice rallenta i tempi di costruzione, quindi dovresti evitare di usarla nella tua build di debug se possibile. Tuttavia, è importante abilitare la riduzione del codice sull'APK finale utilizzato per il test, poiché potrebbe introdurre dei bug se non si personalizza sufficientemente il codice da conservare.

Ad esempio, il seguente frammento di un file build.gradle consente di ridurre il codice per la build di rilascio:

android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
    ...
}

Oltre alla proprietà minifyEnabled , la proprietà proguardFiles definisce le ProGuard rules :

Il metodo getDefaultProguardFile ('proguard-android.txt') ottiene le impostazioni predefinite di ProGuard dagli tools/proguard/ folder Android SDK tools/proguard/ folder . Suggerimento: per ridurre ancora di più il codice, prova il file proguard-android-optimize.txt nella stessa posizione. Include le stesse regole di ProGuard, ma con altre ottimizzazioni che eseguono l'analisi a livello di bytecode, all'interno e tra diversi metodi, per ridurre ulteriormente le dimensioni dell'APK e accelerare l'esecuzione. Il file proguard-rules.pro è dove puoi aggiungere regole ProGuard personalizzate. Per impostazione predefinita, questo file si trova nella radice del modulo (accanto al file build.gradle). Per aggiungere più regole ProGuard che sono specifici per ciascuna variante costruttiva, aggiungere un'altra proprietà proguardFiles nel corrispondente productFlavor blocco. Ad esempio, il seguente file Gradle aggiunge flavor2-rules.pro al sapore flavor2 del prodotto. Ora flavor2 usa tutte e tre le regole ProGuard perché vengono applicate anche quelle del blocco di rilascio.

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                   'proguard-rules.pro'
        }
    }
    productFlavors {
        flavor1 {
        }
        flavor2 {
            proguardFile 'flavor2-rules.pro'
        }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow