2012-04-15 10 views
6

Sto cercando di offuscare la mia applicazione Android però sto ottenendo il seguente errore:Proguard - riferimenti non risolti ai membri della classe di programma

[2012-04-15 19:55:51 - TmtAndroid] Proguard returned with error code 1. See console 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.ClassPathElement: can't find referenced method 'org.apache.tools.ant.Project getProject()' in class proguard.ant.ClassPathElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.ClassPathElement: can't find referenced method 'boolean isReference()' in class proguard.ant.ClassPathElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.ClassPathElement: can't find referenced method 'java.lang.Object getCheckedRef(java.lang.Class,java.lang.String)' in class proguard.ant.ClassPathElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.ClassPathElement: can't find referenced method 'java.lang.String[] list()' in class proguard.ant.ClassPathElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.ClassPathElement: can't find referenced method 'void setLocation(java.io.File)' in class proguard.ant.ClassPathElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.ClassSpecificationElement: can't find referenced method 'boolean isReference()' in class proguard.ant.ClassSpecificationElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.ClassSpecificationElement: can't find referenced method 'java.lang.Object getCheckedRef(java.lang.Class,java.lang.String)' in class proguard.ant.ClassSpecificationElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.ConfigurationElement: can't find referenced method 'boolean isReference()' in class proguard.ant.ConfigurationElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.ConfigurationElement: can't find referenced method 'java.lang.Object getCheckedRef(java.lang.Class,java.lang.String)' in class proguard.ant.ConfigurationElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.ConfigurationTask: can't find referenced method 'org.apache.tools.ant.Project getProject()' in class proguard.ant.ConfigurationTask 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.FilterElement: can't find referenced method 'boolean isReference()' in class proguard.ant.FilterElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.FilterElement: can't find referenced method 'java.lang.Object getCheckedRef(java.lang.Class,java.lang.String)' in class proguard.ant.FilterElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.KeepSpecificationElement: can't find referenced method 'boolean isReference()' in class proguard.ant.KeepSpecificationElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.KeepSpecificationElement: can't find referenced method 'java.lang.Object getCheckedRef(java.lang.Class,java.lang.String)' in class proguard.ant.KeepSpecificationElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.MemberSpecificationElement: can't find referenced method 'boolean isReference()' in class proguard.ant.MemberSpecificationElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.MemberSpecificationElement: can't find referenced method 'java.lang.Object getCheckedRef(java.lang.Class,java.lang.String)' in class proguard.ant.MemberSpecificationElement 
[2012-04-15 19:55:51 - TmtAndroid] Warning: proguard.ant.ProGuardTask: can't find referenced method 'org.apache.tools.ant.Project getProject()' in class proguard.ant.ProGuardTask 
[2012-04-15 19:55:51 - TmtAndroid]  You should check if you need to specify additional program jars. 
[2012-04-15 19:55:51 - TmtAndroid] Warning: there were 17 unresolved references to program class members. 
[2012-04-15 19:55:51 - TmtAndroid]   Your input classes appear to be inconsistent. 
[2012-04-15 19:55:51 - TmtAndroid]   You may need to recompile them and try again. 
[2012-04-15 19:55:51 - TmtAndroid]   Alternatively, you may have to specify the option 
[2012-04-15 19:55:51 - TmtAndroid]   '-dontskipnonpubliclibraryclassmembers'. 
[2012-04-15 19:55:51 - TmtAndroid] java.io.IOException: Please correct the above warnings first. 
[2012-04-15 19:55:51 - TmtAndroid] at proguard.Initializer.execute(Initializer.java:321) 
[2012-04-15 19:55:51 - TmtAndroid] at proguard.ProGuard.initialize(ProGuard.java:211) 
[2012-04-15 19:55:51 - TmtAndroid] at proguard.ProGuard.execute(ProGuard.java:86) 
[2012-04-15 19:55:51 - TmtAndroid] at proguard.ProGuard.main(ProGuard.java:492) 

Quando aggiungo

-dontwarn proguard.ant.** 

a proguard.cfg , apk viene esportato, ma dopo l'installazione sul telefono, si blocca, quindi non è la soluzione in questo caso ...

Cosa devo fare per risolvere questi avvertimenti? E 'la mia prima interazione con Proguard ...

Grazie

risposta

1

Il mio approccio generale quando si lavora con Proguard è di iniziare con un piccolo file .pro con tutto acceso e quindi avviare lo spegnimento varie opzioni di offuscamento/ottimizzazione/ritiro fino a quando il vaso risultante funziona correttamente.

Quindi suggerirei di utilizzare lo Proguard examples page e provare le varie opzioni -keep e dontXXX che suggeriscono.

Inoltre, La vostra applicazione (o il quadro Android) fanno uso di metodi nativi , serializzazione, riflessione, metodi di callback, annotazioni, ecc ...? La documentazione degli esempi fornisce le impostazioni che è necessario passare a Proguard per assicurarsi che la manipolazione bytecode di Proguard non interrompa queste funzionalità.

Ad esempio, non ho molta familiarità con la piattaforma Android, ma credo che utilizzi un tipo di framework XML che indica come caricare/utilizzare le classi Java definite. Se questo è il caso, e hai Proguard offuscare i nomi di classi o di pacchetti, il framework XML non sarà più in grado di trovare quelle classi.

+1

Le uniche classi del riferimento XML che non sono compilate in risorse sono le attività e i servizi a cui si fa riferimento in AndroidManifest.xml e se si utilizzano le configurazioni fornite da Android per Proguard, contrassegna automaticamente quelle con "-keep. .." –

Problemi correlati