使用 Proguard 处理 Jackson 库后混淆时出错

2024-03-21

在使用 Proguard 搜索了与混淆问题相关的各种查询之后,我觉得我可能是only一个有这个特殊问题的人。因此,该帖子。

我有一个相当标准的 Android 应用程序,它使用基于 JSON 的 REST 调用来交换数据。我利用Jackson解析 JSON 数据的库。一切都运行得非常完美,直到我们决定使用 Proguard 对我们的发布版本进行混淆。在解决了一系列与回调相关的问题之后,我终于遇到了与 Jackson 库相关的问题。

基本上,该行ObjectMapper om = new ObjectMapper()- 就是不行!我在该行不断收到以下错误:

Caused by: java.lang.ExceptionInInitializerError
    at org.codehaus.jackson.map.ObjectMapper.<clinit>(Unknown Source)
    ... 8 more
Caused by: java.lang.NullPointerException
    at org.codehaus.jackson.map.introspect.VisibilityChecker$Std.<init>(Unknown Source)
    at org.codehaus.jackson.map.introspect.VisibilityChecker$Std.<clinit>(Unknown Source)
    ... 9 more

在阅读了许多与包含外部库、让 proguard 忽略 Jackson 库类、打开和关闭优化以及缩小标志相关的其他帖子后,我现在一无所知。

我已包含在我的proguard.cfg为了杰克逊的缘故而归档——

-dontskipnonpubliclibraryclassmembers
-dontoptimize
-dontshrink
-libraryjars xtraLibs/joda-time-1.6.2.jar;xtraLibs/xml-apis.jar;xtraLibs/jsr311-api-0.8.jar;xtraLibs/stax2-api-3.0.0.jar;xtraLibs/httpmime-4.0.1.jar

其中,我已经切换了dontoptimize and dontshrink旗帜。然而,结果始终是一样的。

在我尝试解决这个问题的所有时间中,我对 Proguard 库所付出的努力感到惊讶和敬畏。只是当事情不顺利时,它们就会有点混淆的.

混淆器版本 -4.6


从堆栈跟踪中并不明显,但 Jackson 需要一些注释,ProGuard 默认情况下会删除这些注释。比照。 ProGuard 手册 > 示例 >处理注释 http://proguard.sourceforge.net/manual/examples.html#annotations:

-keepattributes *Annotation*,EnclosingMethod

此外,正如不祥的包名称“org.codehaus.jackson.map.introspect”所暗示的那样,Jackson 对解析的类执行内省以查找 getter 和 setter。在不知情的情况下,ProGuard 可能会删除或重命名它们,因为您的代码可能不会显式使用它们。您可能必须明确保留它们,例如:

-keep public class mydatapackage.** {
  public void set*(***);
  public *** get*();
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Proguard 处理 Jackson 库后混淆时出错 的相关文章

随机推荐

  • 如何通过pyodbc备份数据库

    当使用 pyodbc 游标执行时 备份语句不能在事务中使用 pyodbc 似乎在默认事务内执行查询 我也尝试过使用自动提交模式或在备份语句之前添加提交语句 这两个都不起作用 can t execute the backup statemen
  • 位置 2 出现意外文字

    我在 html 页面上显示时遇到此错误 并且我以数组形式返回日期 如果我只想显示未来的月份和年份 那么应该做什么 现在我想返回整个日期 因此 html 上有错误ngmodel 中 p calendar 标签中的页面 其中我显示 date2
  • ckeditor“key”的使用 CKEDITOR.instances.editor.on('key', function (e){

    我意识到存在有关如何为 CKEDITOR 4 实现事件处理程序的问题 我可以使用此代码来获取按键按下数据 但我似乎无法在按键后获取数据 CKEDITOR instances editor on key function e document
  • Kotlin Android 扩展是否缓存合成属性或每次调用 findViewById() 时?

    如果我有一个简单的自定义视图 myitem xml
  • 检查 sys.argv[x] 是否已定义

    检查变量是否已传递给脚本的最佳方法是什么 try sys argv 1 except NameError startingpoint blah else startingpoint sys argv 1 检查长度sys argv if le
  • 如何使用 sf 更改国家之间共享边界的颜色?

    我想将共享颜色更改为不同的颜色 比如说红色 到目前为止 我正在绘制德国联邦州巴伐利亚并触及奥地利各州 我从以下位置获取数据https gadm org download country html https gadm org downloa
  • 尝试调用不存在的方法。超导系统

    当我运行 STS Spring Boot 应用程序时 出现以下错误 The attempt was made from the following location org apache catalina authenticator Aut
  • PITest 找不到测试

    我们的项目都是由整个公司的母公司设置的 对于我正在处理的项目 我们有一个根 pom 它引用该父级 并在其下面有许多模块 尝试单独将 PITest 与这些模块中的任何一个一起使用 或者在根模块上使用 都会导致不运行任何测试 lp server
  • 在 Notepad++ 中获取我自己的 PHP 函数的参数提示

    在 首选项 gt 备份 自动完成 中启用 输入时的函数参数提示 后 我获得了有关本机 PHP 函数的有用提示 如下所示 string false substr string str int start int length 是否有插件或其他
  • 音频会话服务: kAudioSessionProperty_OverrideAudioRoute 具有不同的输入和输出路由

    我正在摆弄音频会话服务 我正在尝试控制音频路由设置AudioSessionSetProperty kAudioSessionProperty OverrideAudioRoute as kAudioSessionOverrideAudioR
  • 在模型类中使用 java.awt.Point - 糟糕的编码风格?

    我有一个场景 对象在坐标系上移动 我考虑在我的模型类中使用 java awt Point 因为它提供了我需要的所有功能 位置表示 翻译 距离计算 但在我的模型中使用 java awt 类感觉有些错误 但重写相同的功能也不是答案 所以我的问题
  • MATLAB 中不使用 for 循环的多个数组的交集

    我总是被告知 在 MATLAB 中几乎所有的 for 循环都可以省略 而且它们通常会减慢进程 那么这里有办法做到这一点吗 我有一个元胞数组 tsCell tsCell存储不同长度的时间数组 我想为所有时间数组找到一个相交的时间数组 Inte
  • Twig 数组访问

    我正在尝试打印传递给树枝模板的变量的值 我正在使用这段代码 naziv 0 索引为 0 因为传递的数组只有一个元素 提到的代码会产生以下错误 具有键 title 的数组的键 0 不存在于 但是当我像这样使用 for 循环时 for key
  • Proguard (R8) 混淆自定义视图名称

    我在我的应用程序中使用 R8 并且有几个自定义视图 在 xml 布局中引用 但它们的名称根本没有混淆 有什么办法可以实现这一点吗 我正在使用标准 Gradle 规则 release minifyEnabled true shrinkReso
  • 常规语言的最小泵送长度

    如何计算正则语言的最小泵送长度 例如 如果我有 0001 则最小泵送长度应为 4 即 000 无法泵送 为什么会这样呢 它将小于或等于该语言的最小 DFA 中的状态数减一 因此 将正则表达式转换为 DFA 最小化它 并对状态进行计数 对于你
  • 如何将 Git 子模块与 Composer 加载的库一起使用?

    我有一个 Zend Framework 2 应用程序 它包含一些包含业务逻辑的库代码和一些其他实用程序 这些代码对于稍后创建的其他应用程序来说是通用的 我的目的是使用 Composer 跨项目共享它 问题是 我该如何正确地做到这一点并简化开
  • Visual Studio 2010 中的自动源文件前导码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想配置我的 VS2010 以便每次创建新的源文件时 都包含一个注释序言 将包含许可证 我们迫切需要的
  • 如何从我的 URL 中隐藏“cgi-bin”、“.py”等?

    全新的网页设计 使用 python 让 Apache 启动并运行 测试 python 脚本在 cgi bin 目录中工作 当我显式输入 URL 时获得有效结果 cgi bin showenv py 但我不希望 URL 看起来那样 例如 在
  • #pragma mark 未列出第一个组名称

    我在用着 pragma mark将我的方法分组到某些类别下 但问题在于Xcode 4我的第一个类别没有显示 我的代码如下所示 interface MyClass NSObject pragma mark pragma mark Catego
  • 使用 Proguard 处理 Jackson 库后混淆时出错

    在使用 Proguard 搜索了与混淆问题相关的各种查询之后 我觉得我可能是only一个有这个特殊问题的人 因此 该帖子 我有一个相当标准的 Android 应用程序 它使用基于 JSON 的 REST 调用来交换数据 我利用Jackson