proguard converte automaticamente enum in intero per l'ottimizzazione della memoria o devo configurarlo per farlo? Se devo configurare qual è la configurazione?proguard converte tutte le enumerazioni in int o deve essere configurato per questo
8
A
risposta
15
L'ottimizzazione è elencata su ProGuard optimizations page. Sembra essere una delle ottimizzazioni predefinite, ma può essere specificata esplicitamente (come altre ottimizzazioni) se è necessario un maggiore controllo (ad esempio disabilitando tutte le ottimizzazioni class/*
oltre a enum unboxing).
classe/unboxing/enum tipi
semplifica enum alle costanti, quando possibile.
Ho appena provato questo e decompilato il codice, ma una semplice classe enum (solo enumerazioni, nessun campo) appare ancora come un enum invece di un int. C'è qualcosa che sto sbagliando? Sto usando il file 'proguard-android-optimize.txt'. –
@ThomasVos Si noti che quel file ha una specifica predefinita per [mantenere i membri della classe statici sulle enumerazioni] (https://android.googlesource.com/platform/sdk/+/master/files/proguard-android-optimize.txt#48), che potrebbe interferire con l'unboxing. Proverei a rimuoverlo prima, a patto che non si usi il metodo 'values ()' o la conversione 'String' (che praticamente limita i controlli di uguaglianza). –
Grazie per la risposta. Ho già rimosso quelle righe copiando il file nel mio codice sorgente e rimosso il file delle regole proguard android in gradle. Tuttavia, le enumerazioni appaiono ancora nel codice decompilato. –