Android, Javamail und Proguard

7

Ich versuche Javamail in meiner Android-App zu verwenden, aber Proguard beschwert sich über eine ganze Menge Sachen, die es nicht finden kann. Ich habe verschiedene Heilmittel ausprobiert, die ich bei der Suche im Internet gefunden habe, aber nichts scheint zu funktionieren. Hat jemand dieses Ding funktioniert? Danke.

Ich habe der defauly proguard.cfg einige -dontwarn-Befehle hinzugefügt und alle Warnmeldungen mit Ausnahme der folgenden gelöscht:

%Vor%

Diese Warnung hat nicht einmal das gleiche Format wie alle anderen.

    
Philip Sheard 25.03.2011, 15:37
quelle

3 Antworten

21

Ich benutze das 2.1 SDK, was einen Unterschied machen könnte. Ich habe auch eine ziemlich komplexe E-Mail. Aber ich habe es jetzt sortiert, indem ich auf Proguard 4.6 aktualisiert habe und die folgenden Zeilen zu meinem Proguar, cfg:

hinzugefügt habe %Vor%

Die letzte Gruppe von Zeilen ist nicht-trivial. Ich habe es erhalten, indem ich tar tf-Befehle für jedes der jars im Javamail-Paket ausgeführt habe.

Update für SDK 17

Android SDK 17 führt einige Änderungen in der Art und Weise ein, wie Gläser geladen werden. Wenn Sie ein Projekt verwenden, das externe JARs verwendet, wird ein Upgrade auf SDK 17 oder höher wahrscheinlich das Problem lösen. Um dies zu beheben, wählen Sie Projekt & gt; Eigenschaften & gt; Java-Buildpfad & gt; Bestellen und exportieren Sie aus dem Menü, und aktivieren Sie die Kästchen links von den drei von Javamail verwendeten Gläsern. Dies stellt sicher, dass die Gläser in den Zielbau exportiert werden. Ohne diesen Fix wird das Projekt immer noch aufgebaut, aber Javamail wird nicht mehr funktionieren und proguard wird ebenfalls fehlschlagen. Dies ist nicht ein Progard-Problem überhaupt. Es handelt sich um ein Android SDK-Problem. Es sind keine Änderungen an der proguard.cfg erforderlich.

Eine weitere Folge des Upgrades des SDK ist, dass es nicht mehr notwendig ist, proguard manuell zu aktualisieren.

    
Philip Sheard 26.03.2011, 13:42
quelle
2

Cfr. ProGuard Handbuch & gt; Fehlerbehebung & gt; Warnung: kann keine Superklasse oder Schnittstelle finden.

Weitere ähnliche Fragen und Antworten heute: one on stackoverflow und eins im ProGuard Hilfeforum .

Die verstümmelte Fehlermeldung "[Ljava.awt.datatransfer.DataFlavor;" wurde in ProGuard 4.6 gelöst. Sie können proguard.jar einfach im Android SDK ersetzen. Alternativ können Sie das Problem umgehen, indem Sie die referenzierende Klasse statt der referenzierten Klasse auflisten: "-dontwarn org.apache.harmony.awt.datatransfer.DataProxy".

    
Eric Lafortune 25.03.2011 22:09
quelle
0

Verwenden Sie dieses Projekt: javamail-android ?

Es funktionierte für mich ohne einen einzigen Haken (zugegebenermaßen mit den Standardeinstellungen von Proguard im 2.3 SDK), also könnte das Problem sein, dass das Standard-Javamail AWT-Klassen benötigt, die in Android nicht vorhanden sind.

Der zugehörige Beispielcode ist Senden von E-Mails ohne Benutzereingriff (keine Absichten) in Android

    
tonys 26.03.2011 10:46
quelle

Tags und Links