5

android用のjavamailapiを使用してメールクライアントを作成しましたが、アプリはエミュレーターまたはデバイスで正常に実行されます... eclipseを使用してプロジェクトをエクスポートしたいのですが、次のエラーが発生しました。

     Warning: org.apache.harmony.awt.datatransfer.DataProxy: can't find superclass or interface java.awt.datatransfer.Transferable
 Warning: org.apache.harmony.awt.datatransfer.NativeClipboard: can't find superclass or interface java.awt.datatransfer.Clipboard
 Warning: javax.activation.CommandInfo: can't find referenced class java.beans.Beans
 Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.Sasl
 Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.SaslClient
 Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.SaslException
 Warning: org.apache.harmony.awt.datatransfer.DragSourceEventProxy: can't find referenced class java.awt.Point
 Warning: org.apache.harmony.awt.datatransfer.DragSourceEventProxy: can't find referenced class java.awt.dnd.DragSourceContext
 Warning: org.apache.harmony.awt.datatransfer.DragSourceEventProxy: can't find referenced class java.awt.dnd.DragSourceEvent

ご覧のとおり、javamailapiはjava.awtおよびjavax.securitylibsを使用しています...プロジェクトにそれらを追加して、プロジェクトをエクスポートして難読化するにはどうすればよいですか?

どうもありがとうございます!

アップデート:

プロジェクトにjreライブラリをインポートしようとしましたが、これらのエラーはなくなりましたが、新しいエラーが表示されました。

Proguard returned with error code 1. See console
 Note: there were 4243 duplicate class definitions.
 Warning: library class com.sun.xml.internal.messaging.saaj.soap.FastInfosetDataContentHandler extends or implements program class javax.activation.DataContentHandler
 Warning: library class com.sun.xml.internal.ws.encoding.XmlDataContentHandler extends or implements program class javax.activation.DataContentHandler
 Warning: library class com.sun.xml.internal.messaging.saaj.soap.MessageImpl$1 extends or implements program class javax.activation.DataSource
 Warning: library class com.sun.xml.internal.ws.encoding.StringDataContentHandler extends or implements program class javax.activation.DataContentHandler 

私に何ができる?

4

2 に答える 2

11

リストされているJavaクラスは、Androidランタイムの一部ではありません。最もクリーンな解決策は、それらを参照するクラスをjavamailライブラリから削除することです。これは、これらのクラスがこの環境では機能しないためです。

一般に、ProGuard構成でそれらをフィルターで除外することもできますが、Androidビルドスクリプトはフィルターをサポートしていません。

簡単な代替手段として、警告を抑制することができます。

-dontwarn java.awt.**,javax.security.**,java.beans.**

その後、ProGuardは文句を言わずに続行します。

于 2011-03-23T22:05:22.280 に答える
4

プロジェクトにjreライブラリを追加し、このコマンドをproguard.cfgファイルに追加することで問題を解決しました。

-libraryjars <java.home>/lib/rt.jar(java/**,javax/security/**,javax/activation/**)

これが誰かを助けることを願っています:P

于 2011-03-23T06:04:16.353 に答える