【问题标题】:Proguard, Minify, Jsoup and Stack TraceProguard、Minify、Jsoup 和堆栈跟踪
【发布时间】:2015-11-04 03:38:57
【问题描述】:

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

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

这个问题很可能是由 ProGuard 在 minify 过程中引起的。它很可能涉及 Proguard 缩小一些所需的 Jsoup 库例程。如果我将 minifyEnabled 设置为 false,则发布程序会运行,但我更愿意在必要时取消应用 minify。

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

所以我需要知道一些简单的技术性知识...

  1. proguard 语句用于消除 org.jsoup.* 被缩小的语法是什么?
  2. 此语句要添加到哪个文件中,proguard-android.txt 还是 proguard-rules.pro
  3. 如何启动堆栈跟踪?特别是我需要能够在运行程序的发布版本时做到这一点。这一定很简单,但我的搜索还没有找到一个逐步的过程。

似乎这些都是非常基本的问题。几乎我在这些主题上阅读的每个论坛或博客上的每一篇文章都假定你知道这些事情。对于堆栈跟踪,我需要详细的步骤。希望你能帮忙。

编辑: 好的,有点进步。我找到了 -s 或 --stacktrace 选项以及在 IDE 中的设置位置。但是,当我运行程序时,我不知道在哪里可以找到实际的堆栈跟踪。

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

我仍然希望在堆栈跟踪方面获得一些帮助。我在各种博客和论坛中发现的只是已发布应用程序的远程堆栈跟踪方法。我想在 Android Studio 中简单地查看堆栈跟踪。

米克

【问题讨论】:

    标签: android jsoup proguard minify


    【解决方案1】:

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

    -keeppackagenames org.jsoup.nodes
    

    编辑:

    你也可以试试这个:

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

    但没有必要保留一切。 -keeppackagenames org.jsoup.nodes 就够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 2011-05-13
      相关资源
      最近更新 更多