关于安卓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没有判空导致的。因为,我们修改的过程中,只需要加上一个判空即可。
确定报错的类,源码如下图:

然后选中该类,点击FIle–Save。保存该类到本地。然后在对应保存的目录下,就会有一个保存后的java文件,然后修改文件中的判断,如下图:

修改后保存
(一)通过java c编译,生成class文件
找出类中,对应的依赖jar包,这个类中,依赖的jar包为:
gson.jar,okhttp.jar,所以需要这两个包才能执行javac
可执行目录的依赖如下:

然后在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类。
最后执行命令,生成以下文件:

然后,赋值对应生成的.class文件,覆盖原有文件,即可使用。
that‘s all------------------------------------------------------------------------------------------------------
相关文章:
关于安卓jar包修改并且重新发布
背景: 对于某些jar包,其内部是存在bug的,解决的方法无外乎就有以下几种方法: (1)通过反射,修改其赋值逻辑 (2)通过继承,重写其方法 (3࿰…...
Java课题笔记~ AspectJ 对 AOP 的实现(掌握)
AspectJ 对 AOP 的实现(掌握) 对于 AOP 这种编程思想,很多框架都进行了实现。Spring 就是其中之一,可以完成面向切面编程。然而,AspectJ 也实现了 AOP 的功能,且其实现方式更为简捷,使用更为方便,而且还支…...
npm 报错 cb() never called!
不知道有没有跟我一样的情况,在使用npm i的时候一直报错:cb() never called! 换了很多个node版本,还是不行,无法解决这个问题 百度也只是让降低node版本请缓存,gpt给出的解决方案也是同样的 但是缓存清过很多次了&a…...
finally有什么作用以及常用场景
在Java中,finally是一个关键字,用于定义一个代码块,该代码块中的代码无论是否发生异常都会被执行。finally块通常用于确保在程序执行过程中资源的释放和清理。 使用场景: 1. 资源释放:finally块经常用于释放打开的资…...
Python web实战之Django URL路由详解
概要 技术栈:Python、Django、Web开发、URL路由 Django是一种流行的Web应用程序框架,它采用了与其他主流框架类似的URL路由机制。URL路由是指将传入的URL请求映射到相应的视图函数或处理程序的过程。 什么是URL路由? URL路由是Web开发中非常…...
10-数据结构-队列(C语言)
队列 目录 目录 队列 一、队列基础知识 二、队列的基本操作 1.顺序存储 编辑 (1)顺序存储 (2)初始化及队空队满 (3)入队 (4)出队 (5)打印队列 &…...
面试之快速学习C++11 - 右值 移动构造 std::move
C11右值引用 字面意思,以引用传递的方式使用c右值左值和右值,左值是lvalue loactor value 存储在内存中,有明确存储地址的数据, 右值rvalue read value , 指的是那些可以提供数据值的数据(不一定可以寻址,…...
vue实现5*5宫格当鼠标滑过选中的正方形背景颜色统一变色
vue实现5*5宫格当鼠标滑过选中的正方形背景颜色统一变色 1、实现的效果 2、完整代码展示 <template><div id"app" mouseleave"handleMouseLeave({row: 0, col: 0 })"><div v-for"rowItem in squareNumber" :key"rowItem…...
2023-08-09 LeetCode每日一题(整数的各位积和之差)
2023-08-09每日一题 一、题目编号 1281. 整数的各位积和之差二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 示例1: 示例2: 提示: 1 …...
EditPlus连接Linux系统远程操作文件
EditPlus是一套功能强大的文本编辑器! 1.File ->FTP->FTP Settings; 2.Add->Description->FTP server->Username->Password->Subdirectory->Advanced Options 注意:这里的Subdirectory设置的是以后上传文件的默认…...
JVM 垃圾回收
垃圾回收算法 标记-清除算法(Mark and Sweep) 标记-清除算法分为两个阶段。在标记阶段,垃圾收集器会标记所有活动对象;在清除阶段,垃圾收集器会清除所有未标记的对象。标记-清除算法存在的问题是会产生内存碎片&#…...
编程中的宝藏:二分查找
二分查找 假设你需要在电话簿中找到一个以字母 “K” 开头的名字(虽然现在谁还在用电话簿呢!)。你可以从头开始翻页,直到进入以 “K” 打头的部分。然而,更明智的方法是从中间开始,因为你知道以 “K” 打头…...
计算机网络 数据链路层
...
如何维护自己的电脑
目录 1、关于电脑选择的建议 1.1、价格预算 1.2、明确需求 1.3、电脑配置 1.4、分辨率 1.5、续航能力 1.6、品牌选择 1.7、用户评测 1.8、各个电商平台对比 1.9、最后决策 2、我的选择 3、电脑保养 3.1 外部清洁 3.2 安装软件 3.3 优化操作系统 3.4 维护硬件设…...
智能优化算法——哈里鹰算法(Matlab实现)
目录 1 算法简介 2 算法数学模型 2.1.全局探索阶段 2.2 过渡阶段 2.3.局部开采阶段 3 求解步骤与程序框图 3.1 步骤 3.2 程序框图 4 matlab代码及结果 4.1 代码 4.2 结果 1 算法简介 哈里斯鹰算法(Harris Hawks Optimization,HHO),是由Ali As…...
【深度学习】多粒度、多尺度、多源融合和多模态融合的区别
多粒度(multiresolution)和多尺度(multiscale) 多粒度(multiresolution)和多尺度(multiscale)都是指在不同的空间或时间尺度上对数据或信号进行分析和处理。其中 多尺度࿱…...
利用SCCM进行横向移动
01SCCM介绍 SCCM全名为System Center Configuration Manager,从版本1910开始,微软官方将其从Microsoft System Center产品移除,重新命名为Microsoft Endpoint Configuration Manager(ConfigMgr),其可帮助 …...
Nginx 负载均衡
Nginx 负载均衡 负载均衡由反向代理来实现的 其中反向代理分为七层代理和四层代理,一般常用的是七层代理,接下来分别介绍一些 NGINX 七层代理 七层是最常用的反向代理方式,只能配置在Nginx配置文件的http模块。 配置方法名称:…...
Java课题笔记~ ServletConfig
概念:代表整个web应用,可以和程序的容器(服务器)来通信 <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://java.sun.com/xml/ns/javaee"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instan…...
oracle的异常处理
oracle提供了预定义例外、非预定义例外和自定义例外三种类型。其中: l预定义例外用于处理常见的oracle错误; l非预定义例外用于处理预定义所不能处理的oracle错误; l自定义例外处理与oracle错误无关的其他情况。 Oracle代码编写过程中&am…...
React 中的函数式更新
React 中的函数式更新 React 中的函数式更新,指的是在更新 state 时,不给 setState 直接传新值,而是传一个函数。这个函数会接收上一次最新的 state,再基于它计算出新的 state。 基本写法 setCount(prev > prev 1);这里的&…...
技术路径模拟器:人机协同分岔罗盘(修订版)
技术路径模拟器:人机协同分岔罗盘设计代号:FORK-COMPASS-Ω 核心版本:v1.0 设计者:世毫九实验室(Shardy Lab) 一、模拟器概述1.1 核心定位本模拟器是自指递归动力学与多路径决策理论的工程化实现࿰…...
从代码到公路:如何用网页设计体验一把张雪机车的速度与激情?
闲来无事,我设计与制作了一个官网。我想用网页讲一个关于速度与激情的故事。 黑色背景上橙色的光芒划破屏幕,粒子动画如火花般飞溅,3D模型随着鼠标缓缓旋转...这不是在玩游戏,这是在看一台机车。 当其他品牌还在用静态图片展示产…...
金融行情API对接指南:WebSocket实时订阅外汇/期货/数字货币(附代码示例)
引言在量化交易或金融看盘软件开发中,获取低延迟的实时行情(Tick级数据)是核心环节。传统的HTTP轮询不仅效率低,且容易触发风控。目前主流方案是采用WebSocket协议实现全双工通信,服务端主动推送,极大降低资…...
别再只盯着代码覆盖率了!VCS功能覆盖率实战:从covergroup定义到交叉覆盖率的避坑指南
别再只盯着代码覆盖率了!VCS功能覆盖率实战:从covergroup定义到交叉覆盖率的避坑指南 在芯片验证领域,我们常常陷入一个误区:将代码覆盖率视为验证完备性的唯一标准。然而,一个残酷的事实是——即使代码覆盖率高达100%…...
告别网盘限速!八大平台免费直链下载助手完整指南
告别网盘限速!八大平台免费直链下载助手完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 …...
DOM-to-Image:前端开发中的DOM渲染到图像转换技术深度解析
DOM-to-Image:前端开发中的DOM渲染到图像转换技术深度解析 【免费下载链接】dom-to-image Generates an image from a DOM node using HTML5 canvas 项目地址: https://gitcode.com/gh_mirrors/do/dom-to-image 在当今Web应用开发中,将动态DOM内容…...
天尊传奇「剑神密藏」全攻略
核心玩法:消耗灵符 / 剑神密钥抽奖,享高倍加成,可 100 连抽,目标拿飞剑、神装等稀缺战力资源天尊传奇。一、核心规则与折扣消耗:灵符或剑神密钥(密钥可通过活动 / 商城获取,优先用密钥保底&…...
我“调教”了一个AI Agent,让它全天自动写测试用例:3分钟24条,准确率70%+
📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中…...
如何快速恢复PL2303老芯片兼容性:Windows 10/11终极驱动解决方案
如何快速恢复PL2303老芯片兼容性:Windows 10/11终极驱动解决方案 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 还在为那些老式PL2303串口设备在Windows 1…...
