2011-03-22 4 views
5

안드로이드 용 javamail API를 사용하여 메일 클라이언트를 만들었고 응용 프로그램이 에뮬레이터 또는 장치에서 잘 실행됩니다. 이제 Eclipse를 사용하여 프로젝트를 내보내고 싶지만 다음 오류가 발생합니다 :android : proguard 난독 화 문제

 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를 사용하는 것을 볼 수 있습니다 ... 어떻게 프로젝트를 내 프로젝트에 추가하여 프로젝트를 내보낼 수 있고 난독화할 수 있습니까?

대단히 감사합니다!

UPDATE :

내가 내 프로젝트에서 JRE 라이브러리를 가져올 시도하고 이러한 오류가 사라 졌어요하지만 새로운이 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 

내가 무엇을 할 수 있습니까?

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

희망이 도움말 사람 : P 나열된 자바 클래스는

답변

12

+0

이 작동하지만 필터를 지원하지 않는 Android 빌드 스크립트에 대한 정보를 찾지 못했습니다. 그것에 대한 링크가 있습니까? – phunehehe

+0

@phunehehe 이론적으로 Ant 빌드 파일 인 android-sdk/tools/ant/build.xml에 'injars'라는 줄에 필터를 추가 할 수 있습니다. 거기에서 볼 수 있듯이 기본적으로 필터를 정의하지는 않습니다. –

4

나는이 프로젝트에 JRE 라이브러리를 추가하고 열을 파일을 proguard.cfg이 COMAND을 추가하여 문제를 해결 한 Android 런타임의 일부가 아닙니다. 가장 깨끗한 해결책은이 환경에서 결코 작동하지 않을 수 있기 때문에 javamail 라이브러리에서 클래스를 참조하는 클래스를 제거하는 것입니다.

일반적으로 ProGuard 구성에서 필터링 할 수도 있지만 Android 빌드 스크립트는 필터를 지원하지 않습니다.

간단한 대안으로, 당신은 경고를 억제 할 수

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

ProGuard에서 다음 불평없이 진행됩니다.

관련 문제