xuexiangjys / XUpdate

🚀A lightweight, high availability Android version update framework.(一个轻量级、高可用性的Android版本更新框架)
https://github.com/xuexiangjys/XUpdate/wiki
Apache License 2.0
2.33k stars 406 forks source link

Gson dependency issue #131

Closed Goshin closed 3 years ago

Goshin commented 3 years ago

问题描述(必填) 运行时报 gson 相关错误。 建议将 gson 加入库依赖,现在只是设置成了 compileOnly,需要改为 implementation

https://github.com/xuexiangjys/XUpdate/blob/f61cafa54de245ca8cdf6044854e70b3bd55d133/xupdate-lib/build.gradle#L21-L28

compileOnly 导致在使用这个库的时候,必须再自行添加 gson 为依赖,否则运行时找不到相关的类而无法工作,报异常:

Unresolved exception class when finding catch block: com.google.gson.JsonParseException
E/[XUpdate]: Query failed: network request error!(Failed resolution of: Lcom/google/gson/Gson;)
        at com.xuexiang.xupdate._XUpdate.onUpdateError(_XUpdate.java:212)
        at com.xuexiang.xupdate.proxy.impl.DefaultUpdateChecker.onCheckError(DefaultUpdateChecker.java:116)
        at com.xuexiang.xupdate.proxy.impl.DefaultUpdateChecker.access$100(DefaultUpdateChecker.java:46)
        at com.xuexiang.xupdate.proxy.impl.DefaultUpdateChecker$1.onError(DefaultUpdateChecker.java:70)

我看代码只是在 DefaultUpdateParser 轻度使用了一下 new Gson().fromJson(),似乎完全可以用 JSONObject 代替?这样也可以减少一个库依赖,减小体积。

https://github.com/xuexiangjys/XUpdate/blob/0f8391411fd655626d8e06580dd26862d48e980b/xupdate-lib/src/main/java/com/xuexiang/xupdate/proxy/impl/DefaultUpdateParser.java#L37


使用的XUpdate版本(必填) 2.0.7

如何重现(必填) 重现的步骤:

  1. 新建一个空项目
  2. 按 README 集成库并测试
xuexiangjys commented 3 years ago

其实使用compileOnly gson就没有打到包里去.因为现在的android序列化基本上都使用的gson,所以就没有考虑打到包里去. 不过你的建议也不错,其实只是轻度使用了一下,完全可以代替. 已优化 b6cc30e5f6ce9511c6025d87aba667a4c1afae90