前言

项目最近适配了安卓10,而安卓10废弃了某些api,导致调用后就报错,比如:

val var5: TelephonyManager = getSystemService("phone") as TelephonyManager
var5.deviceId//导致崩溃

而项目中用的某个库会在某些情况下调用该代码(这个库比较重要,更换的话问题比较多,且提问题的话肯定就赶不上上线了),于是就想办法能不能修改jar包来规避该问题

然后试了下果然还是可以

前提

  1. 首先库是.jar或.aar的,不开源(开源的直接搞源码就行了,否则可以在缓存目录中找到对应的.jar或.aar)
  2. 三方项目管理者可能没工夫管或者项目上线比较急
  3. 一般情况下还是不推荐这样搞的

正文

  1. 在ide内找到出现问题的源码文件(通过报错堆栈或者debug)
  2. 在项目\app\src\main\java下新建一个和源码文件一样的包名目录
  3. 粘贴源码文件到该包名目录下
  4. 修改代码至不报错且不影响逻辑(可以打印日志看是否走到了你修改的文件中),并运行检查,直到没毛病
  5. 删除build文件夹,并重新运行
  6. 然后打开资源管理器,在build文件夹中找到生成的class, 目录:项目或module根目录\build\app\intermediates\javac\xxxDebug\classes\刚才你修改的包名\类名    ,然后找到所有 类名.class 或 类名$xxx.class 的文件复制出来
  7. 然后把需要修改的.jar文件也复制出来
  8. 把.jar改成.zip然后解压
  9. 复制你的几个.class文件覆盖在相应的包名文件夹下
  10. 然后在起始文件夹处进行压缩成zip,比如你修改的包名为com.xxx  ,就在com这个文件夹上右键然后压缩
  11. 然后修改.zip为.jar,并在项目里覆盖之前的jar包,并删除第2,3步所创建的文件和目录
  12. 然后就替换完成了

扩展

如果是aar包的话也是一样,可以把aar包解压,然后拿到里面的class.jar再次解压就可以进行替换了

如果只是替换aar包内的res资源的话,可以直接在项目内创建同目录同名的文件就可以在打包的时候自动合并了

end

三方库报错真的就没有办法了吗?相关推荐

  1. 安装python37路径报错_解决pycharm安装python库报错问题

    最近在玩微信图灵机器人,不过我安装有一些库,安装报错,上网找了很久,总结有两种方法,记录一下 方法一: 手动安装,直接到官网你需要的python库下载到本地, 放在安装python路径,C:\User ...

  2. python运行启动报错解决方法_51testing:iOS自动化测试的那些干货:关于appium启动报错问题的解决办法...

    原标题:51testing:iOS自动化测试的那些干货:关于appium启动报错问题的解决办法 我们在进行iOS Appium自动化测试的时候,会遇到环境配置.兼容使用问题,这里做个总结,以避免后续踩 ...

  3. pom.xml内容没有错,但一直报错红叉 解决办法

    转自:http://www.cnblogs.com/sxdcgaq8080/p/5590254.html [maven] pom.xml内容没有错,但一直报错红叉 解决办法 1.首先看一下下面的这两个 ...

  4. python下载库报错_下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决...

    下载python中Crypto库报错:ModuleNotFoundError: No module named 'Crypto'的解决 前言 最近在网上找了很多下载Crypto的方法,感觉作用都不算很 ...

  5. CFX计算报错和相应解决办法(浮点错误等-持续更新)

    CFX计算报错和相应解决办法(浮点错误等-持续更新) 1.CFX浮点错误 Floating point exception:Overflow 数值计算过大,浮点数位数不够,使用双精度double类型计 ...

  6. python modulenotfounderror_python 服务器运行代码报错ModuleNotFoundError的解决办法

    一.问题描述 一段 Python 代码在本地的 IDE 上运行正常,部署到服务器运行后,出现了 ModuleNotFoundError: No module named 'xxx" 错误. ...

  7. IndexError: list index out of range--Python报错原因及解决办法

    报错原因 一.括号里面的索引index超出范围 例如:要查找最后一个明星的名字'Hannah Quinlivan',Index输入为4.在Python中,第四个元素的索引为3,因为索引是从0开始的.如 ...

  8. pip安装第三方库报错Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None))

    pip安装第三方库报错Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) pip安装第三方库时 ...

  9. InfoPath 发布表单到SharePoint库报错

    InfoPath 发布表单到SharePoint库报错如下: 下列Web服务器未运行SharePoint 英文报错: The following web server does not appear ...

最新文章

  1. Gitlab Webhooks, External Services, and API(一)
  2. postgre 生成数据库html文档_postgresql数据库导入和导出CSV格式
  3. C语言 游戏远程call调用,创建远程线程 调用游戏所有call
  4. 【BZOJ4668】冷战 并查集
  5. 遇到一个把.o文件strip后出现的奇怪问题
  6. 编译器错误消息: CS0006: 未能找到元数据文件 System.EnterpriseServices
  7. 在sqlServer中把数据导出为insert脚本
  8. Angular之constructor和ngOnInit差异及适用场景
  9. 自己定义图片的progressbar
  10. 【Unity】制作简易三维场景
  11. 大学生计算机vfp,计算机vfp教学课件
  12. 机器学习算法概述——摘录《机器学习算法导论》
  13. 2000级2班同学聚会邀请函.doc
  14. PHP编写两个数的最小公倍数,两个数的最小公倍数怎么求
  15. keygen是怎么写出来的。
  16. 利用客户支持建立忠诚度和竞争优势
  17. linux服务器安装laravel教程
  18. 10.1 单片机数字秒表程序
  19. 垂直水平居中 css
  20. matlab中的sig函数,MATLAB——sigmoid传递函数

热门文章

  1. 数据挖掘流程(六):写报告
  2. 论文笔记:Forecasting at Scale(Prophet)
  3. python爬虫反爬 对方是如何丧心病狂的通过css_如何应对网站反爬虫策略?如何高效地爬大量数据?...
  4. 基于面板数据的熵值法
  5. python数据类型转换方法列表
  6. 滴滴自研分布式 NoSQL 数据库 Fusion 的演进之路
  7. 微服务实战(五):微服务的事件驱动数据管理
  8. java 文件读写demo
  9. Open quote is expected for attribute {1} associated with an element type name.
  10. Understanding JVM Internals---不得不转载呀