【前言】

最近在研究插件化技术的实现,本来其他品牌的机子,测试得挺好,后来测试一下小米的机子,发现Resources替换出现问题,试着断点调试一下发现,小米MIUI系统自己继承Resources重写了自己的MiuiResources类来作为资源管理类

【尝试一】

发现小米MIUI系统实现自己的MiuiResources类之后,想着拉取小米手机里的framework.jar出来看看,它是怎么实现的,正常来说,一般直接进去到system/framework/目录下,就能看到对应framework的jar包,比如:oppo的就对应是coloros-framework.jar,但是小米MIUI系统有点坑爹,system/framework/目录下虽然有个名为framework.jar,但是拉取出来打开啥都没有(我手头上的是红米android 6.0系统,后来发现好像新的系统是有的),看大小都觉得不正常

【备注】
后来查资料发现,android 5.0、6.0那些旧版本机子framework.jar是没有东西,真正代码都编译成了boot.oat,下图是模拟器截图,所以显示目录是system/framework/x86,要是真机应该是 /system/framework/arm/boot.oat

你可以把boot.oat拉取到电脑本地,然后用这个工具:oat2dex,使用命令:

  java -jar oat2dex.jar boot boot.oat

将oat文件转为dex文件就可以了

【尝试二】

既然从小米手机中无法拉取到framework.jar,那么是否可以考虑看看有没有其他途径呢?后来看看还真有,小米有提供一个官方下载小米手机MIUI系统ROM的社区:米柚社区
那么,我们可以从米柚社区下载对应的ROM下来解压获取到framework.jar
1)我们先从下载页选择自己想要下载的版本ROM进去,因为我的手机是红米6,所以我就选择红米6进去,选择“下载完整包”

2)下载之后是在zip压缩包,解压之后,包含以下文件

3)我们重点关注system.new.dat.br这个文件,这个文件解压之后可以获取到framework.jar,但是system.new.dat.br这个文件不是简单的解压工具可以解压的,这个是Google用了自己的压缩算法:Brotli 压缩算法,想要自己动手编译的话,可以去Google brotli github仓库上获取
4)我们这里就介绍更加简单点的做法,去ROM开发者平台下载他们官网那个ROM制作工具,安装之后打开,选择“实用工具”-“new.dat编辑”-"dat与dat.br转换",选择刚刚我们解压的文件system.new.dat.br,点击开始转换

5)转换完毕之后,会生成一个system.new.dat文件

6)接着就是把这个生成的system.new.dat文件再转换为.img文件

7)点击“开始转换”时候,会要求选择transfer.list文件

8)细心的小伙伴应该留意到,刚才解压出从米柚社区下载的ROM时候,有看到里面有个名为:system.transfer.list文件,我们就是选择这个文件即可

9)转换完毕,会生成一个.img文件,这就是我们想要文件

10)但是你会发现.img文件依然不能用普通的解压工具去解压,这里还需要用到一个工具:ROM助手,这个工具的链接就不贴了,因为他们官网好像域名过期了,自己百度下载吧

11)选择“工具箱”-"IMG解包",选择刚刚转换出来的.img文件,就会开始提取出里面的文件

12)解压提取完成之后,我们可以看到以下目录结构,跟我们平时在手机看到的差不多

13)点击进去到system/framework目录,就看到了我们心心念念的framework.jar了

14)但是大家都知道,android系统其实是dalvid虚拟机,而不是JVM,所以里面当然不是普通的jar,而是dex

15)那么,还得把dex转换为jar,这个可以用dex2jar工具,直接输入:d2j-dex2jar framework.jar即可,可能过程中会有些报错,可以不管

16)我们用jad-gui双击打开看看framework-dex2jar.jar,终于都看到了我们想要的MiuiResources类了

拉取小米MIUI系统的framework.jar实践之旅相关推荐

  1. 小米9android系统怎么关闭,小米MIUI系统怎么禁用虚拟键 小米MIUI系统禁用虚拟键方法...

    想新很多米粉对对miui系统不会陌生.这个系统还很是不错.但是刚刚入手小米手机的米粉可能就不太熟悉了.那么,虚拟键要怎么去禁用呢?下面就一起来看看小米MIUI系统虚拟键禁用方法. 大家用安卓手机的时候 ...

  2. 小米miui系统怎么关闭文件管理里的热门视频和表情?

    小米miui系统怎么关闭文件管理里的热门视频和表情? 打开"文件管理"后,切换到"手机"选项卡. 然后,点击屏幕右上角的一排竖点. . 在弹出的菜单中点击&qu ...

  3. 彻底理解Toast原理和解决小米MIUI系统上没法弹Toast的问题

    彻底理解Toast原理和解决小米MIUI系统上没法弹Toast的问题 参考文章: (1)彻底理解Toast原理和解决小米MIUI系统上没法弹Toast的问题 (2)https://www.cnblog ...

  4. 小米miui系统如何关闭安装软件时的推荐广告

    描述:小米miui系统如何关闭安装软件时的推荐广告 步骤: 在安装软件界面右上角点击设置 将资源推荐取消即可

  5. 小米MIUI系统开发版内测公测申请详细路径步骤方法

    描述:小米MIUI系统开发版内测公测申请详细路径步骤方法 步骤: 使用对应型号手机,下载小米社区APP 首页顶部,点击开发组 点击内测申请,填写表格即可 申请内测需要内测分,大家平时多去社区手机型号圈 ...

  6. android 判断miui版本,Android判断手机是否是小米MIUI系统的方法

    易采站长站为您分析Android判断手机是否是小米MIUI系统的方法的相关资料,需要的朋友可以参考下 废话不多说了,直接给大家贴代码了: 具体代码如下所示: public class MIUIUtil ...

  7. android 画中画 分屏 区别,小米MIUI系统手机分屏VS画中画功能,教你游戏聊天两不误...

    原标题:小米MIUI系统手机分屏VS画中画功能,教你游戏聊天两不误 MIUI9上曾经为我们带来了分屏功能,这项功能的加入,使得可以在一个屏幕上同时干两件不同的事情,例如同时聊QQ和微信,或者聊天的同时 ...

  8. android 关闭神隐模式,爱玩机 | 小米miui系统神隐模式你知道,那么极致神隐模式呢?...

    原标题:爱玩机 | 小米miui系统神隐模式你知道,那么极致神隐模式呢? 用过小米miui系统的都知道在miui设置里面的电量和性能,有一个神隐模式,用处就是帮你关掉你后台的软件,你可以为每一个应用进 ...

  9. 小米 MIUI系统 安装包 刷机

    首先说,小mi会不给老一点得机子推送新miui系统慢一些,但是为了让大家满足自己得迫切体验感,会将安装包发到官网上 ,让大家自行下载安装,这也增加了可玩性. 如果你想早先体验,我觉得无需去某宝上去买账 ...

最新文章

  1. 博士申请 | 香港中文大学王思博助理教授招收图表示学习方向全奖博士生
  2. PPT 下载 | 神策数据曹犟:数据驱动从方法到实践
  3. lucene 入门整理
  4. 数据洪流时代,开发者这样硬核突围!
  5. 12-1。。。面试的一些体会吧
  6. 突然不能访问服务器未响应,windows 访问不服务器未响应
  7. [转]远远走来一个绿茶婊
  8. javascript 编程指南
  9. 自定义View:悬浮球与加速球
  10. elasticSearch创建索引库、映射、文档
  11. 程序哨兵----誓把流氓软件赶出我们的电脑!
  12. PhpStorm 正则 小写变大写
  13. 国际海运出口的操作流程是怎样的?
  14. 最佳化三维建模与重构中的神经网络先验
  15. 【牛投客】:牛投客经过三年的投资
  16. MATLAB | 官方自带的绘图代码生成功能咋用
  17. 升米恩斗米仇,驳”开源侵略论”
  18. 将算法写成程序的方法
  19. linux相对路径查看文件是否存在,2 linux笔记 文件目录管理
  20. 微波、超短波、短波、中波、长波的频率(波长)

热门文章

  1. php的和谐脏话,大司马仅有的两次说脏话,听完网友笑出声,直播效果一片和谐!...
  2. sap查询所有事物代码
  3. Uva 514 Rails
  4. LTE/NB-IoT 常用3GPP协议导读
  5. 树莓派如何与物联网平台交互(搭建一个树莓派网关)(一)
  6. sigaction函数中关于sa_mask的解释
  7. TL494电源芯片使用记录分享
  8. STM32的引脚模式
  9. jackson序列化错误 get类型方法名的坑 [com.fasterxml.jackson.databind.exc.InvalidDefinitionException]
  10. 你知道:学校门口开什么店赚钱吗?分享学校门口暴利生意!