2013-07-09 72 views
3

我正在使用gmailsender在我的應用程序中發送電子郵件。我跟着下面的鏈接Sending Email in Android using JavaMail API without using the default/built-in app使用proguard時gmailsender不工作

但是我注意到,每當我使用proguard來構建我的APK,那麼gmail發件人不起作用(當我安裝該APK時)。沒有錯誤發生,但電子郵件不發送。如果我禁用了proguard,然後生成APK,那麼使用該APK可以正常工作。

任何人都可以請建議這裏可能是錯的。

:::編輯::: - 添加了幾個錯誤消息(刪節)線路從控制檯,而生成APK。我可以得到這些警告RID卻被忽略它們IN的ProGuard配置文件

[2013-07-09 10:00:38 - ] Proguard returned with error code 1. See console 
[2013-07-09 10:00:38 - ] Warning: org.apache.harmony.awt.datatransfer.DataProxy: can't find superclass or interface java.awt.datatransfer.Transferable 
[2013-07-09 10:00:38 - ] Warning: org.apache.harmony.awt.datatransfer.NativeClipboard: can't find superclass or interface java.awt.datatransfer.Clipboard 
[2013-07-09 10:00:38 - ] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.Sasl 
[2013-07-09 10:00:38 - ] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.Sasl 
[2013-07-09 10:00:38 - ] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.SaslClient 
[2013-07-09 10:00:38 - ] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find 
[2013-07-09 10:00:38 - ] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.auth.callback.NameCallback 
[2013-07-09 10:00:38 - ] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.sasl.RealmCallback 
[2013-07-09 10:00:38 - ] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.sasl.RealmChoiceCallback 
[2013-07-09 10:00:38 - ] Warning: javax.activation.CommandInfo: can't find referenced class java.beans.Beans 
[2013-07-09 10:00:38 - ] Warning: javax.activation.CommandInfo: can't find referenced class java.beans.Beans 
[2013-07-09 10:00:38 - ] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.Toolkit 
[2013-07-09 10:00:38 - ] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.GraphicsEnvironment 
[2013-07-09 10:00:38 - ] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.Toolkit 
[2013-07-09 10:00:38 - ] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.Toolkit 
[2013-07-09 10:00:38 - ]  You should check if you need to specify additional program jars. 
[2013-07-09 10:00:38 - ] Warning: there were 247 unresolved references to classes or interfaces. 
[2013-07-09 10:00:38 - ]   You may need to specify additional library jars (using '-libraryjars'). 
[2013-07-09 10:00:38 - ] java.io.IOException: Please correct the above warnings first. 
[2013-07-09 10:00:38 - ] at proguard.Initializer.execute(Initializer.java:321) 
[2013-07-09 10:00:38 - ] at proguard.ProGuard.initialize(ProGuard.java:211) 
[2013-07-09 10:00:38 - ] at proguard.ProGuard.execute(ProGuard.java:86) 
[2013-07-09 10:00:38 - ] at proguard.ProGuard.main(ProGuard.java:49 
+0

是ü檢查所有jar文件導入和導出你的項目屬性? –

+0

是的,他們都在那裏。否則,我會收到運行時錯誤,我不是。 – user1938357

+0

你能告訴我運行時錯誤logcat的消息嗎? –

回答

11

終於解決了通過更新至ProGuard的最新版本,從4.7到4.9的問題。

還增加了以下內容ProGuard的配置文件

-dontwarn java.awt.** 
-dontwarn java.beans.Beans 
-dontwarn javax.security.** 
-keep class javamail.** {*;} 
-keep class javax.mail.** {*;} 
-keep class javax.activation.** {*;} 
-keep class com.sun.mail.dsn.** {*;} 
-keep class com.sun.mail.handlers.** {*;} 
-keep class com.sun.mail.smtp.** {*;} 
-keep class com.sun.mail.util.** {*;} 
-keep class mailcap.** {*;} 
-keep class mimetypes.** {*;} 
-keep class myjava.awt.datatransfer.** {*;} 
-keep class org.apache.harmony.awt.** {*;} 
-keep class org.apache.harmony.misc.** {*;} 
+0

PS:在文件中:proguard.cfg 謝謝你這麼匹配你的答案!你真的幫助我了! –

+0

感謝它的工作很好.. –