2016-02-08 5 views
5

Hey sono nuovo con proGuard, lo uso per proteggere il mio codice da reverse engineering, ma quando ho creato il mio apk firmato ho ricevuto molti errori quando ho abilitato ProGuard, googled il mio problema ho trovato le risposte che dice che l'uso -dontwarn per le classi che mostrano nel messaggio di errore, ma dopo aver visto la documentazione da Proguard si dicequal è la differenza tra -keep class e -dontwarn

Se non avete voglia di filtrare le classi problematiche, puoi tentare la fortuna con l'opzione -ignorewarnings, o anche con l'opzione -dontwarn. Usa queste opzioni solo se sai davvero cosa stai facendo.

e non so cosa sto facendo e qui è la mia proguard-rules.pro file di

-dontwarn okio.** 
-dontwarn org.apache.** 
-dontwarn com.appodeal.** 
-dontwarn com.parse.** 
-dontwarn com.squareup.** 

e ho visto alcune risposte dice che l'uso -keep class

così qualcuno può spiegare

+1

mantenere classe significa che stai dicendo proGuard: non toccare questa classe, dontwarn significa, qualsiasi problema accada ... non dirmi :) – Yazan

risposta

5

-keep class Conserva le classi e i membri della classe specificati.

-dontwarn Non avvertire affatto i riferimenti non risolti.

Maggiori informazioni qui http://proguard.sourceforge.net/manual/refcard.html

+0

Significa che è più sicuro scrivere ignorare e seguire la classe per stessa classe. per esempio: -dontwarn okio. ** -keep class okio. ** – batmaci

2
-dontwarn 

Specifica di non mettere in guardia su riferimenti non risolti e altri problemi importanti a tutti. Il filtro opzionale è un'espressione regolare; ProGuard non stampa avvisi su classi con nomi corrispondenti. Ignorare gli avvertimenti può essere pericoloso. Ad esempio, se le classi o i membri della classe non risolti sono effettivamente necessari per l'elaborazione, il codice elaborato non funzionerà correttamente. Usa questa opzione solo se sai cosa stai facendo!

-keep class 

Specifica le classi e i membri della classe (campi e metodi) da conservare come punti di ingresso nel codice. Ad esempio, per mantenere un'applicazione, è possibile specificare la classe principale insieme al suo metodo principale. Per elaborare una libreria, è necessario specificare tutti gli elementi accessibili pubblicamente.

Spero che questo aiuti!