Proguard,Minify,Jsoup和Stack Trace

时间:2015-08-11 18:54:35

标签: android jsoup proguard minify

好的,我已经做了几天了,所以我知道问题是什么,原因是什么,解决方案是什么。我需要的是一些简单的技术细节,以便我可以实现解决方案。

我在发布版本中收到“不幸的已停止”消息,但在调试版本中没有出现。在我的S4 mini和Samsung RTL设备上都会发生这种情况。调试版适用于所有这些设备以及Genymotion仿真器。当我点击激活Jsoup.connect的菜单选项时,使用Jsoup发生错误。

在缩小过程中,问题很可能是由ProGuard引起的。而且很可能是Proguard将一些必需的Jsoup库例程缩小了。如果我将minifyEnabled设置为false,则会运行发布程序,但我希望在必要时取消应用minify。

解决方案是尽可能地禁用所有Jsoup的minify,因为它很小,但最好只针对某些部分。我已经读过堆栈跟踪,我可以确定哪些特定的Jsoup模块需要从minify中消除而不是缩小整个lib。

所以我需要了解一些简单,技术性的东西......

  1. 用于消除 org.jsoup。* 的proguard语句的语法是什么?
  2. 此声明要添加到哪个文件, proguard-android.txt proguard-rules.pro
  3. 如何启动堆栈跟踪?特别是我需要能够在运行该程序的发布版本时执行此操作。它必须很简单,但我的搜索没有逐步显示出来。
  4. 这似乎是非常基本的问题。实际上,我在这些主题上阅读过的每个论坛或博客上的每篇文章都假定您了解这些内容。对于堆栈跟踪,我需要详细的步骤。希望你能帮忙。

    编辑: 好的,取得一点进展。我找到了-s或--stacktrace选项以及在IDE中设置它的位置。但是,当我运行程序时,我很遗憾在哪里可以找到实际的堆栈跟踪。

    EDIT#2 取得更好的进展。找到这个例子 -keep class org.joda.time。 {; } **所以我用jsoup代替joda,把它放到proguard-rules.pro文件中,我的发布版本现在运行:)

    我仍然想通过stacktrace获得一些帮助。我在各种博客和论坛中找到的是用于远程堆栈跟踪已发布应用程序的方法。我想在Android Studio中查看堆栈跟踪。

    米克

1 个答案:

答案 0 :(得分:0)

将此行添加到您的proguard-rules.pro文件中:

-keeppackagenames org.jsoup.nodes

编辑:

您也可以尝试以下方法:

-keep public class org.jsoup.** { public *; }

但无需保留所有内容。 -keeppackagenames org.jsoup.nodes就足够了。