快捷修改jar包代码

34次阅读

共计 845 个字符,预计需要花费 3 分钟才能阅读完成。

背景:最近团队维护项目,涉及到文件下载,之前使用 aliyun-oss-sdk-android-2.3.0.jar 下载 OSS 的文件,现在添加文件服务器,参考了 aliyun-oss 的断点续传下载机制,后来发现 aliyun-oss 的库默认就写死了 80 端口,但是我们的文件服务器不是 80 端口。所以想到改一下里面的代码。目的:仅分享这种修改 jar 包的方法。
思路一:直接写下载代码

一大堆续传逻辑,需要编写调试验证;
临发布才发现有这种问题。

最终因为时间紧迫,考虑其他方案。
思路二:拉源代码修改
这种思路还是比较科学的,只是在此时想到了思路三,然后就尝试了一番。
思路三:部分修改,编译

用 JD-GUI(反编译) 打开 aliyun-oss-sdk-android-2.3.0.jar 包,拷贝 com.alibaba.sdk.android.oss.internal.RequestMessage 代码。
用 7z 打开 aliyun-oss-sdk-android-2.3.0.jar 包,删掉 com.alibaba.sdk.android.oss.internal.RequestMessage.class。

新建工程,导入修改后的 aliyun-oss-sdk-android-2.3.0.jar,新建 com.alibaba.sdk.android.oss.internal 包,新建 RequestMessage.java,把第一步的代码拷贝过来,修改代码:
String baseURL = scheme + “://” + urlHost + “:” + this.endpoint.getHost();
注意:包名类名要一样。

编译。
把 target 下 com.alibaba.sdk.android.oss.internal.RequestMessage.class 用 7z 拉回 jar 包的 com.alibaba.sdk.android.oss.internal。
完成。

总结:拷贝代码,删掉 jar 包里的 class,修改代码,编译生成 class,拉回 jar 包。

正文完
 0