【发布时间】:2011-10-21 21:36:26
【问题描述】:
所以,我尝试发布一些软件,但 Proguard 让我头疼。
当我尝试使用 proguard 导出时,我收到很多警告,即“找不到引用的类”
例如:
[2011-08-07 17:44:37 - GAME] Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
[2011-08-07 17:44:37 - GAME] Warning: there were 52 unresolved references to classes or interfaces.
[2011-08-07 17:44:37 - GAME] You may need to specify additional library jars (using '-libraryjars'),
[2011-08-07 17:44:37 - GAME] or perhaps the '-dontskipnonpubliclibraryclasses' option.
[2011-08-07 17:44:37 - GAME] java.io.IOException: Please correct the above warnings first.
[
警告似乎与简单框架有关,因此在我的 proguard 配置文件中,我添加了以下内容:
-libraryjars pathtoprojecttolibs\simple-xml-2.4.jar
pathtoprojecttolibs 是我的项目引用的 jar 的路径。
这没什么区别。
如果 simpleframework 引用 javax,我可以告诉 proguard 也忽略这个吗??
有什么想法吗?
【问题讨论】:
-
你使用proguard只是为了做treeshaking吗?如果是这样,您是否在不使用文件的情况下检查了文件大小?当 proguard 抛出一些使用反射访问的东西时,你可能会遇到非常奇怪的错误,例如,在它破坏运行时你不会找到它,所以真的,真的确定你需要它。
-
我真的只是用它来尝试保护被划伤的代码吗?你觉得值得吗?
-
@ListenToRick Proguard 非常好,如果它使用正确的配置运行并且您的结果应用程序测试正确。我很确定谷歌甚至推荐使用它。 Google 提供了很多关于在 Android 应用中使用 Proguard 的指南/示例。
-
Proguard 是一个很好的工具,但谷歌推荐它可能至少和其他任何东西一样,因为 dex 格式的大小限制相当奇怪。 (见code.google.com/p/android/issues/detail?id=7147)
-
@alun,这不是原因。我们这些不希望我们的应用程序进行反向工程的人,或者那些使用许可来“尝试”防止盗版的人应该使用诸如此类的混淆工具,以使其更难成为黑客。使您的应用程序占用更少的空间对最终用户来说也是一个好处,而且这些工具还进行了优化......还有另一个好处。