Android ADT,Proguard和外部Jars的问题

时间:2011-01-24 19:50:52

标签: android eclipse adt proguard

所以,我正在努力让ADT的内置程序实现适用于我的应用程序。不幸的是,它似乎在我引用的第三方库中的各种类中窒息。 我已经尝试了各种各样的 - 如果不是全部的话 - 我能想到的-libraryjars和-keep公共类行的组合,但这一切都没有好处。我对Proguard并不熟悉,老实说,我不知道我哪里出错了。我试过谷歌,但大部分信息都与Ant脚本有关。

我尝试过的一些事情:

  • 文件顶部或底部的-libraryjars C:\ Users \ Dave \ workspace \ Dropbox_Sync_for_Tasker_and_Locale \ lib \ apache-mime4j-0.6.jar这样的行

  • 试图相对地制作罐子的路线,但根本没有成功。

  • 像-keep public class org.apache.commons.logging.LogFactory

  • 这样的行
  • 引用错误行其他部分的行,例如-keep public class org.apache.james.mime4j.field.MailboxListField

无论如何,错误日志是一个巨大的文本墙,所以我把它放在一个pastebin here上。

3 个答案:

答案 0 :(得分:3)

所以,如果你碰巧找到这个答案,并且就像,嗯,我也有这个问题,我希望他发布他的解决方案,你运气不错。

我修复它的方法是将-libraryjars行粘贴在那里,然后

-dontwarn org.apache.commons.logging.LogFactory
-dontwarn net.jcip.annotations.NotThreadSafe
-dontwarn net.jcip.annotations.ThreadSafe
-dontwarn net.jcip.annotations.Immutable

它工作正常。这是一个黑客,它很脏,但它为我解决了它。不幸的是,如果你也遇到这个问题,你仍然可以自己做。

答案 1 :(得分:3)

在我的项目中添加“apache-mime4j-0.6.1.jar”和“httpmime-4.0.1.jar”后,我有完全相同的问题。 (用于将二进制数据多部分POST到我的服务器)。

我也不熟悉pro-guard,但至少我设法将我的自定义小部件添加到proguard.cfg中 - 遗憾的是,apache库被证明更难添加!

这是我的修复...我已将其添加到proguard.cfg的底部:

#APACHE LIBRARY
-libraryjars /libs/apache-mime4j-0.6.1.jar
-libraryjars /libs/httpmime-4.0.1.jar
-keepnames class org.apache.** {*;}
-keep public class org.apache.** {*;}
-dontwarn org.apache.commons.logging.LogFactory
-dontwarn org.apache.http.annotation.ThreadSafe
-dontwarn org.apache.http.annotation.Immutable
-dontwarn org.apache.http.annotation.NotThreadSafe

我希望前4行是修复。不幸的是,需要dontwarn才能真正“修复”它。

如果我错了,请纠正我(因为我不是proGuard pro),但我相信前4行确保库按原样使用。四行(dontwarn)的第二部分只是掩盖了剩余的废话,并没有纠正一些潜在的问题。 我不知道底层问题是什么。

答案 2 :(得分:0)

尝试下载commons-logging.jar,将其放入您的libs并在您的proguard配置中添加-libraryjars