好的,我已经为此工作了几天,所以我知道问题是什么,原因是什么,解决方案是什么。我需要的是一些简单的技术细节,以便我可以实现该解决方案。
我在发布版本中收到“不幸的是已停止”消息,该消息在调试版本中不会出现。这发生在我的 S4 mini 和三星 RTL 设备上.调试版本适用于所有这些设备以及Genymotion模拟器。当我点击激活Jsoup.connect的菜单选项时,使用Jsoup时会发生错误。
该问题很可能是由 ProGuard 在缩小过程中引起的。它很可能涉及 Proguard 缩小一些所需的 Jsoup 库例程。如果我将 minifyEnabled 设置为 false,发布程序确实会运行,但我更愿意在必要时取消应用 minify。
解决方案是禁用所有 Jsoup 的缩小,因为它无论如何都很小,但最好只针对某些部分。我已经读到,通过堆栈跟踪,我可以确定哪些特定的 Jsoup 模块需要从 minify 中删除,而不是从 minify 中消除,而不是最小化完整的库。
所以我需要知道一些简单的技术问题…
似乎这些都是非常基本的问题。事实上,我在每个论坛或博客上读到的关于这些主题的每一篇帖子都假设你知道这些事情。对于堆栈跟踪,我需要详细的步骤。希望你能帮忙。
编辑:好的,取得了一点进展。我找到了 -s 或 --stacktrace 选项以及在 IDE 中设置它的位置。但是,当我运行程序时,我不知道在哪里可以找到实际的堆栈跟踪。
编辑#2取得了更好的进展。找到了这个例子——保持类org.joda.time. { ; }** 所以我用j就代替了joda,把它放到proguard-rules.pro文件中,我的发布版本现在运行:)
我仍然希望获得有关堆栈跟踪的一些帮助。我在各种博客和论坛中找到的都是已发布应用程序的远程堆栈跟踪方法。我想简单地在Android Studio中查看堆栈跟踪。
硬币反面
将此行添加到您的proguard-rules.pro
文件中:
-keeppackagenames org.jsoup.nodes
编辑:
你也可以试试这个:
-keep public class org.jsoup.** { public *; }
但没必要什么都留着。< code >-keeppackagenames org . jsoup . nodes 就足够了。