2011-03-22 21 views
5

hice un cliente de correo electrónico con el uso de la API JavaMail para android y la aplicación se ejecuta bien en el emulador o dispositivo ... Ahora quiero exportar el proyecto usando Eclipse, pero tengo los siguientes errores:androide: Proguard ofuscar problema

 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 

Como puedo ver el API JavaMail utiliza java.awt y javax.security libs ... ¿cómo puedo añadir en mi proyecto para que pueda exportar mi proyecto y ocultar que?

Muchas gracias!

ACTUALIZACIÓN:

Me trataron de importar la biblioteca de JRE en mi proyecto y esos errores se han ido pero los nuevos apeared:

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 

¿Qué puedo hacer yo?

Respuesta

12

las clases Java son enumerados no es parte del tiempo de ejecución de Android. La solución más limpia sería eliminar las clases que los referencian de la biblioteca javamail, porque nunca pueden funcionar en este entorno.

En general, también podría filtrarlos en su configuración de ProGuard, pero la secuencia de comandos de compilación de Android no admite filtros.

Como una alternativa simple, puede suprimir las advertencias:

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

ProGuard procederá entonces sin quejarse.

+0

Esto funciona, pero no encuentro ninguna información en la secuencia de comandos de compilación de Android que no sea compatible con los filtros. ¿Tienes un enlace sobre eso? – phunehehe

+0

@phunehehe En teoría, podría agregar filtros al archivo de compilación Ant android-sdk/tools/ant/build.xml, en la línea con 'injars'. Como puede ver allí, no define ningún filtro por defecto. –

4

que han resuelto el problema mediante la adición de la biblioteca JRE en el proyecto y diez añadir esta COMAND a proguard.cfg archivo:

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

esperanza de que esto ayuda a alguien: P

Cuestiones relacionadas