android:proguard混淆问题

android:proguard混淆问题,android,obfuscation,proguard,Android,Obfuscation,Proguard,我使用android的javamail api制作了一个邮件客户端,该应用程序在模拟器或设备中运行良好。。。现在,我想使用eclipse导出项目,但出现以下错误: Warning: org.apache.harmony.awt.datatransfer.DataProxy: can't find superclass or interface java.awt.datatransfer.Transferable Warning: org.apache.harmony.awt.data

我使用android的javamail api制作了一个邮件客户端,该应用程序在模拟器或设备中运行良好。。。现在,我想使用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
正如我所见,javamail api使用java.awt和javax.security libs。。。如何将它们添加到项目中,以便导出项目并使其混淆

多谢各位

更新:

我尝试在我的项目中导入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 

我能做什么

我通过在项目中添加jre库和将此comand添加到proguard.cfg文件中解决了这个问题:

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

希望这对某人有所帮助:p

列出的java类不是Android运行时的一部分。最干净的解决方案是从javamail库中删除引用它们的类,因为它们永远无法在这种环境中工作

通常,您也可以在ProGuard配置中过滤掉它们,但Android构建脚本不支持过滤器

作为一种简单的替代方法,您可以抑制以下警告:

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

ProGuard将毫无怨言地继续进行。

这是可行的,但我没有发现任何关于Android构建脚本的信息不支持过滤器。你有这方面的链接吗?@phunehehe理论上你可以在Ant构建文件android sdk/tools/Ant/build.xml中添加过滤器,并在“injars”行中添加过滤器。如您所见,默认情况下它不定义任何过滤器。