混淆之后,调用第三方jar包运行出错

Gavin_Mirror 2014-12-09 03:10:06
情况是这样的:
在混淆了之后(没有混淆第三方包)运行,出现调用第三方jar包方法,参数出错的问题

因为我使用了retrofit这个网络库,在使用的时候需要最后一个参数一定要是retrofit.Callback类型的,因为我要在callback里面再做一些操作,所以,我就实现了这个接口,然后使用的时候,传递我实现的这个类,当然,在混淆了代码之后,这个类也被混淆了,这个时候,调用第三方方法的时候,就说我传递的参数是错误的。

我看了一下混淆之后的代码,虽然那个类,被混淆了,但是它还是继承自retrofit.Callback的啊。

大家有没有遇到过类似的问题?求解。
...全文
428 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gavin_Mirror 2014-12-09
  • 打赏
  • 举报
回复
问题解决,结贴 -keep class com.mingmu.youqu.controller.StringServerController$*{ *; } -keep class com.mingmu.youqu.controller.GsonServerController$*{ *; } 添加了这么两句,因为我这两个类中具有继承自第三方的内部类和匿名内部类,在混淆的时候把他们都忽略了就可以了。 上述脚本,可以忽略混淆一个类中的内部类和匿名内部类。
xzy2046 2014-12-09
  • 打赏
  • 举报
回复
keep住出错的类。
失落夏天 版主 2014-12-09
  • 打赏
  • 举报
回复
引用 3 楼 AA5279AA 的回复:
对于人家提供的jar包 直接 -keep public class xxx.** { *; } -dontwarn xxx.** -keep class xxx.** { *; }
抱歉,刚才没看清就回复了。 改成直接keep对应的实现的那个类呢?
失落夏天 版主 2014-12-09
  • 打赏
  • 举报
回复
对于人家提供的jar包 直接 -keep public class xxx.** { *; } -dontwarn xxx.** -keep class xxx.** { *; }
Gavin_Mirror 2014-12-09
  • 打赏
  • 举报
回复
引用 1 楼 birdsaction 的回复:
这个接口不能混淆, -keep class com.xx.xx.MyCallBack { public <fields>; public <methods>; }
为什么要这样呢? 那也就是说,任何我从第三方继承的类都不能混淆吗? 还有,如果是一个内部类的话,脚本应该怎么写呢? 好像我写成这种集成的方式是没有用的啊-keep class * implements retrofit.Callback<T> 还是会被混淆。
Birds2018 2014-12-09
  • 打赏
  • 举报
回复
这个接口不能混淆, -keep class com.xx.xx.MyCallBack { public <fields>; public <methods>; }

80,363

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧