2013-07-26 12 views
16

Quale sarebbe una configurazione ProGuard intelligente per offuscare solo i metodi e le costanti privati ​​di una particolare classe com.acme.Algorithm?Con ProGuard, come posso offuscare una sola classe?

Mi piacerebbe offuscare proprio questo, perché contiene un algoritmo che non dovrebbe essere evidente quando si apre accidentalmente il .jar.

Sono un novizio ProGuard. AFAIU, devi usare "keep", ma la logica positiva di "do obfuscate" non è disponibile, giusto? Quindi, come escludere la mia lezione da una configurazione "keep everything"? Nota: non voglio offuscare altre classi per il momento, perché voglio consentire al cliente di vedere stacktraces significativi.

risposta

22

L'offuscamento di una singola classe non avrà molto effetto: potrebbe modificare il nome della classe e alcuni nomi di campi e metodi e potrebbe ottimizzare alcuni codici. L'offuscamento tende ad essere meno efficace per nascondere piccole informazioni. Più codice di applicazione viene offuscato, più diventa difficile da capire.

Detto questo, è possibile specificare:

-keep class !com.acme.Algorithm { *; } 

Mantiene tutte le classi/campi/metodi al di fuori di com.acme.Algorithm.

+0

il mio problema è: continua a cercare di offuscare altre classi anche se ho impostato sopra la linea. Come è potuto accadere? – Jacky

+0

Ho anche lo stesso problema di @Jacky Qualsiasi suggerimento per risolvere il problema –

Problemi correlati