2016-04-14 2 views
3

Ich habe eine Quelle von Drittanbietern in mein Android-Projekt integriert und ich habe Probleme, es mit proguard aktiviert zu bauen. Der Build versagt mit diesem:"Ungelöste Referenzen" und "Kann keine Superklasse finden" -Warnungen von Proguard

Warning: there were 123 unresolved references to classes or interfaces. 
     You may need to add missing library jars or update their versions. 
     If your code works fine without the missing classes, you can suppress 
     the warnings with '-dontwarn' options. 
     (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass) 
Warning: there were 201 unresolved references to program class members. 
     Your input classes appear to be inconsistent. 
     You may need to recompile the code. 
     (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember) 
Warning: Exception while processing task java.io.IOException: Please correct the above warnings first. 

:app:transformClassesAndResourcesWithProguardForRelease FAILED 

FAILURE: Build failed with an exception. 

Es gibt viele Hinweise und Warnungen zu sortieren, und ich kann nicht Kopf oder Zahl davon machen. Ich habe versucht, --keep class example.package.** { *; } für alles hinzuzufügen, das scheint, Warnungen zu verursachen, aber es schlägt immer noch fehl. Kann jemand eine Strategie zum Umgang mit solchen Themen vorschlagen? wenn ich dies zum Beispiel finden Sie unter:

Warning: info.guardianproject.netcipher.client.MyDefaultClientConnectionOperator: can't find superclass or interface ch.boye.httpclientandroidlib.impl.conn.DefaultClientConnectionOperator

was soll ich dagegen tun?

+0

Keine Hinweise auf https://github.com/guardianproject/NetCipher/tree/master/sample-hurl –

+0

Um dieses Problem zu reproduzieren, fügen Sie 'kompilieren 'info.guardianproject.netcipher: netcipher: 1.2'' zu den App * * build.gradle ** Abhängigkeiten. Dann 'Import info.guardianproject.netcipher.NetCipher;' in Ihrem Code und 'HttpsURLConnection con = NetCipher.getHttpsURLConnection (URL);' –

+0

@ ban-Geoengineering Bitte überprüfen Sie die Antworten unten sowie diese Links: http: // proguard. sourceforge.net/manual/troubleshooting.html https://github.com/krschultz/android-proguard-snippets – rmp251

Antwort

4

Hinzufügen der folgenden auf Ihre proguard-Datei wird die Kompilierung Problem lösen:

-dontwarn info.guardianproject.netcipher.** 

Das heißt, Sie sollten auf alle Verzweigungen lesen, die mit so kommen würde. Proguard warnt normalerweise aus gutem Grund.

3

Der Grund, warum Sie diese Warnungen erhalten, ist, dass Guardianproject mit Abhängigkeiten durcheinander ist. Wie Sie sehen können, hat hereNetCipher keine Abhängigkeiten. Und httpclientandroidlib ist eindeutig ein externes Projekt. Innerhalb Netcipher haben sie die .jar library gebaut und nicht in ihre Bibliothek verpackt. Leider ist httpclientandroidlib nicht verfügbar über jcenter Abhängigkeit.

Es gibt zwei Lösungen:

  1. Vorgeschlagen von @Tommie: add

    -dontwarn info.guardianproject.netcipher.** 
    

    Sie proguard-rules.pro Datei, wenn diese dependecies nicht notwendig sind. Sie werden nur die Warnung los, manchmal ist es ein guter Weg. Aber normalerweise funktioniert das nicht. Dann gehen Sie zu Schritt zwei

  2. Sie müssen httpclientandroidlib manuell zu Ihrem Projekt hinzufügen.

  3. Copy Ordnerstruktur

    1. Herunterladen ein Projekt von github als .zip

    2. Add new module zu einem Projekt, nennen Sie es httpclientandroidlib (nur als Referenz Name ist frei wählbar. Ich kann es so nennen) ch.boye.httpclientandroidlib zum neuen Modul src Ordner

    3. Ersetzen Sie das Modul AndroidManifest mit dem von httpclientandroidlib Bibliothek.

    4. Add dependecy zu Ihrer Haupt-aa-Modul:

      compile project(':httpclientandroidlib') 
      

Dann können Sie mit dem Projekt anfangen zu arbeiten.

+0

Danke dafür. Ich habe das gleiche Problem, nachdem ich die Datei compile.madgag.spongycastle: prov: 1.54.0.0 der App build.gradle hinzugefügt habe. Laut http://www.methodscount.com/?lib=com.madgag.spongycastle%3Aprov%3A1.54.0.0 hat es 1 Abhängigkeit, wissen Sie also, wie ich herausfinden kann, was diese Abhängigkeit ist? –

+0

Funktioniert [diese Lösung] (http://stackoverflow.com/a/29787286/6507689) nicht für Sie? –

+0

Es funktioniert, danke, also die Prämie, die Ihnen zugesprochen wird. In meinem Kommentar stellte ich eine andere Frage - über methodscount.com. –

Verwandte Themen