关于安卓jar包修改并且重新发布

这篇具有很好参考价值的文章主要介绍了关于安卓jar包修改并且重新发布。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:

对于某些jar包,其内部是存在bug的,解决的方法无外乎就有以下几种方法:
(1)通过反射,修改其赋值逻辑
(2)通过继承,重写其方法
(3)修改jar包的源码,从根源上修复问题
对于改动量,难易程度,(1)和(2)都是比较适合的,但是,有些情况下,不能满足修改条件,所以就有了方案3,要不就乖乖等官方jar包版本更新。

环境:

(1)win10
(2)jdk11
(3)jd查看工具下载(版本jd-gui-1.6.6.jar)

实战

举个例子,以aliyun-vod-upload-android-sdk-1.6.5.jar为例。其中
类:AliyunVodAuth,181行,有个空指针判断没有做,导致了程序报错,报错信息如下:

com.alibaba.sdk.android.vod.upload.auth.AliyunVodAuth$2$1.onFailure(AliyunVodAuth.java:181)
com.aliyun.vod.qupaiokhttp.OkHttpTask.onPostExecute(OkHttpTask.java:279)
com.aliyun.vod.qupaiokhttp.OkHttpTask$2.run(OkHttpTask.java:228)
android.os.Handler.handleCallback(Handler.java:942)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loopOnce(Looper.java:211)
android.os.Looper.loop(Looper.java:300)
android.app.ActivityThread.main(ActivityThread.java:8152)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1028)

因为这个包目前位置,已经是官方最新的jar包了,所以等官方更新,也不知道要等到什么时候,因此,就需要手动修改jar包里面的内容了。

(一)提取文件,修改,保存

报错代码实际源码如下:

if (var1x == 1003) {
	AliyunVodAuth.this.vodAuthCallBack.onError(AliyunVodErrorCode.VODERRORCODE_HTTP_ABNORMAL, "http error response unknown.");
 }

可见是vodAuthCallBack没有判空导致的。因为,我们修改的过程中,只需要加上一个判空即可。

确定报错的类,源码如下图:
关于安卓jar包修改并且重新发布,安卓实战,android,jar,java
然后选中该类,点击FIle–Save。保存该类到本地。然后在对应保存的目录下,就会有一个保存后的java文件,然后修改文件中的判断,如下图:
关于安卓jar包修改并且重新发布,安卓实战,android,jar,java
修改后保存

(一)通过java c编译,生成class文件

找出类中,对应的依赖jar包,这个类中,依赖的jar包为:
gson.jar,okhttp.jar,所以需要这两个包才能执行javac
可执行目录的依赖如下:
关于安卓jar包修改并且重新发布,安卓实战,android,jar,java
然后在dos指令窗口输入以下指令

执行指令如下:
javac -cp aliyun-vod-upload-android-sdk-1.6.5.jar;E:\Android\sdk\platforms\android-30\android.jar;okhttp-4.5.0.jar;gson-2.10.1.jar *.java

其中,cp代表编译的时候,涉及到哪些依赖文件,window中用;分割,而*.java代表目录下的所有.java格式的文件,也可以指定某个java类。

最后执行命令,生成以下文件:
关于安卓jar包修改并且重新发布,安卓实战,android,jar,java
然后,赋值对应生成的.class文件,覆盖原有文件,即可使用。

that‘s all------------------------------------------------------------------------------------------------------文章来源地址https://www.toymoban.com/news/detail-640143.html

到了这里,关于关于安卓jar包修改并且重新发布的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于GeoServer发布服务时数据源设置的避坑指南

            时光任然,一年一度的五一劳动节已然来到。作为疫情之后迎来的第一个五一,不知道各位小伙伴们怎么度过这个劳动节呢?是决定去另一个城市,观察体验一下不一样的风景,或者去旅游,给自己放假。昨天被12306的一则关于上海虹桥站4月28日火车票全部售罄的

    2024年02月01日
    浏览(21)
  • Microsoft 已经发布了5月份关于修复其产品中安全问题的报告。

      🔥 Microsoft 已经发布了5月份关于修复其产品中安全问题的报告。注意这个报告中的趋势性漏洞。   💻随着研究背景的获得,CVE-2023-29324获得了意义。 什么是风险: 所有支持的Windows版本都受到影响--该漏洞是对MSHTML安全机制的一种绕过。 它能导致什么? 攻击者可以创建

    2024年02月08日
    浏览(16)
  • 关于微信更新后,发布的小程序一键登录不生效uni.getUserProfile

    前言 最近微信官方开始更新,对uni.getUserProfile进行了回收,也许有很多正在服务阶段的小程序突然就无法进行微信用户信息收集进行登录了,废话不多说,直接上图。(本文不做科普,只解决问题,如有效求个赞) 一、登录微信公众号平台 对于这个,想必大家不会陌生,因

    2024年04月14日
    浏览(24)
  • 关于Uniapp开发h5怎么直接在手机上看到效果,不需要模拟器和发布。

    首先将手机和电脑连接同一个网络(这里以电脑连接手机热点为例) 将项目运行,运行后编辑器会输出两个地址,一个是http://localhost/前缀的,一个是以你本机ip地址(network)为前缀的. 现在复制以ip地址为前缀的那个地址. 将地址发送到手机,在手机浏览器上访问即可.效果同步刷新

    2024年02月09日
    浏览(23)
  • 关于Unity使用Aspose.Words.dll发布Windows平台后运行报错:Operation is not supported on this platform.说明

    👉一、报错来源 Unity版本:Unity 2018.4.36f1。 Aspose.Words.dll版本:18.7.0.0 Targets .NET 3.5。 打包为exe文件运行后执行到Aspose.Words的相关Api时报错(编辑器运行无报错)。 👉二、报错信息 PlatformNotSupportedException:Operation is supported on this platform. 大概意思是,平台不支持的异常:当前平

    2024年02月12日
    浏览(40)
  • Jar包反编译,修改代码后,重新打jar包

    最近遇到一个问题,需要把现有的jar包反编译成java代码,然后运行,测试,修改后再次打jar包。并不复杂的项目,只是一个很简单的main方法,并不是spring项目。可能是之前的开发走了,然后代码丢失了,只剩下客户那边有一个用的jar包。 jar包:xxx-0.0.1-SNAPSHOT-jar-with-dependen

    2023年04月08日
    浏览(32)
  • 使用jd-gui反编译修改jar包里的.class并重新生成新jar

    准备工具:jd-gui.exe反编译工具 下面以我本地修改 graphql-java-15.0.jar 包为例: 准备jar包,新建origin文件夹,将jar包通过win.rar或当前文件夹cmd运行解压命令 jar -xvf graphql-java-15.0.jar 解压到origin文件夹内 使用 jd-gui工具 打开 graphql-java-15.0.jar 假如我要修改Assert.class,不要在 jd-gui工

    2024年02月15日
    浏览(22)
  • 【Java用法】windows10系统下修改jar中的文件并重新打包成jar文件然后运行

    测试环境(Linux)的代码(jar包)拉取到本地电脑(Windows10),然后连接本地电脑上的数据库并在本地电脑运行。 前提:Windows10电脑,jar包文件,本地电脑已安装好MySQL数据库。 需求:需要将下面jar包中配置文件的数据库连接地址修改成本地电脑连接地址,并把修改后的配置

    2024年02月12日
    浏览(35)
  • 逆向修改Unity的安卓包资源并重新打包

            在上一篇文章中,我已经讲过如何逆向获取unity打包出来的源代码和资源了,那么这一节我将介绍如何将解密出来的源代码进行修改并重新压缩到apk中。        其实在很多时候,我们不仅仅想要看Unity的源码,我们还要对他们的客户端源码进行修改和调整,比如

    2024年01月16日
    浏览(22)
  • 【Linux】linux下使用命令修改jar包内某一个文件中的内容并重新运行jar程序

    需求:发现线上的 iotp-irsb-server-v1.0.0.2.jar 包中配置文件的日志级别配置错误,需要在线修改jar包中文件的application-prod.yml的日志级别配置,修改完成后并重启该jar包。 进入到该jar包所在的目录,使用 vi 命令打开 jar 包内文件列表。 1、vi iotp-irsb-server-V1.0.0.2.jar 如下图所示:

    2024年02月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包