相关疑难解决方法(0)

如何在Eclipse for Android开发中检查/升级Proguard版本?

关于这方面的文件非常差.我知道可以通过在项目的rot目录中手动编辑"default.properties"来启用ProGuard.所有的设置都放在同一个地方的"proguard.cfg"文件中,但我想知道正在使用哪个版本的ProGuard(我使用的是Eclise Indigo).我还希望能够在发布时将其升级到最新版本.但我找不到任何关于如何做的参考.

eclipse obfuscation android proguard

30
推荐指数
2
解决办法
1万
查看次数

Android,Proguard和Javamail

首先,我已经提到过类似的帖子,Android,javamail和proguard

提到的解决方案是在proguard-project.txt中明确地保留以下内容:

-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.** {*;}
Run Code Online (Sandbox Code Playgroud)

乍一看,这似乎是有效的,因为它编译时没有任何警告.但是,它无法读取消息内容,只是跳过它.我尝试过以下方法:

  1. -includelibraryjars明确命名javamail所需的3个jar文件.
  2. - 将jar作为外部库删除,遵循新的libs/include格式.
  3. - 维护proguard-android.txt中的默认android设置
  4. - 跟随proguard常见问题解答中的故障排除指南.
  5. - 启动一个新项目并将源文件复制到它.
  6. - 各种程序选项,包括-dontshrink,keepnames等
  7. - 专业项目/清洁

经过几个小时的挫折之后,我发现这似乎有用了:

-dontobfuscate
-dontshrink
-keepdirectories
-keeppackagenames javax.mail.**
-keeppackagenames javax.activation.**
-keeppackagenames …
Run Code Online (Sandbox Code Playgroud)

android jakarta-mail proguard

5
推荐指数
1
解决办法
1916
查看次数

javax.mail.nosuchproviderexception smtp

我正在使用以下代码在我的Android应用程序中发送电子邮件:

    m_properties = new Properties();
    m_properties.put("mail.smtp.host", "smtp.gmail.com");
    m_properties.put("mail.smtp.socketFactory.port", "465");
    m_properties.put("mail.smtp.socketFactory.class",
                    "javax.net.ssl.SSLSocketFactory");
    m_properties.put("mail.smtp.auth", "true");
    m_properties.put("mail.smtp.port", "465");

    m_Session = Session.getDefaultInstance(m_properties,
                    new Authenticator() {
                        protected PasswordAuthentication getPasswordAuthentication() {
                            return new PasswordAuthentication(userName,
                                    passWord);
                        }

                    });

    m_simpleMessage = new MimeMessage(m_Session);

    m_fromAddress = new InternetAddress(userName);
    m_toAddress = new InternetAddress(eRecipient);

    m_simpleMessage.setFrom(m_fromAddress);
    m_simpleMessage.setRecipient(RecipientType.TO, m_toAddress);
    m_simpleMessage.setSubject(eSubject);
    m_simpleMessage.setContent(eBody, "text/plain");

    Transport.send(m_simpleMessage);
Run Code Online (Sandbox Code Playgroud)

它工作得非常好,直到我混淆了我的代码.然后电子邮件无法发送,抛出错误:javax.mail.nosuchproviderexception smtp

我在proguard.cfg中尝试了各种设置,例如:-keep class javax.mail.**{*; }

但没有任何作用.如果我关闭混淆,它再次正常工作.

有什么想法会发生这种情况吗?

提前致谢.

编辑:我的Proguard配置文件

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-verbose


-libraryjars "C:\Program Files\Android\android-sdk\platforms\android-15\android.jar"
-libraryjars "C:\Documents and Settingslibs\commons-io-2.4.jar"
-libraryjars "C:\Documents and Settings\libs\mail.jar"
-libraryjars "C:\Documents and Settingslibs\activation.jar" …
Run Code Online (Sandbox Code Playgroud)

android jakarta-mail

2
推荐指数
1
解决办法
1716
查看次数

标签 统计

android ×3

jakarta-mail ×2

proguard ×2

eclipse ×1

obfuscation ×1