拉取小米MIUI系统的framework.jar实践之旅
【前言】
最近在研究插件化技术的实现,本来其他品牌的机子,测试得挺好,后来测试一下小米的机子,发现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实践之旅相关推荐
- 小米9android系统怎么关闭,小米MIUI系统怎么禁用虚拟键 小米MIUI系统禁用虚拟键方法...
想新很多米粉对对miui系统不会陌生.这个系统还很是不错.但是刚刚入手小米手机的米粉可能就不太熟悉了.那么,虚拟键要怎么去禁用呢?下面就一起来看看小米MIUI系统虚拟键禁用方法. 大家用安卓手机的时候 ...
- 小米miui系统怎么关闭文件管理里的热门视频和表情?
小米miui系统怎么关闭文件管理里的热门视频和表情? 打开"文件管理"后,切换到"手机"选项卡. 然后,点击屏幕右上角的一排竖点. . 在弹出的菜单中点击&qu ...
- 彻底理解Toast原理和解决小米MIUI系统上没法弹Toast的问题
彻底理解Toast原理和解决小米MIUI系统上没法弹Toast的问题 参考文章: (1)彻底理解Toast原理和解决小米MIUI系统上没法弹Toast的问题 (2)https://www.cnblog ...
- 小米miui系统如何关闭安装软件时的推荐广告
描述:小米miui系统如何关闭安装软件时的推荐广告 步骤: 在安装软件界面右上角点击设置 将资源推荐取消即可
- 小米MIUI系统开发版内测公测申请详细路径步骤方法
描述:小米MIUI系统开发版内测公测申请详细路径步骤方法 步骤: 使用对应型号手机,下载小米社区APP 首页顶部,点击开发组 点击内测申请,填写表格即可 申请内测需要内测分,大家平时多去社区手机型号圈 ...
- android 判断miui版本,Android判断手机是否是小米MIUI系统的方法
易采站长站为您分析Android判断手机是否是小米MIUI系统的方法的相关资料,需要的朋友可以参考下 废话不多说了,直接给大家贴代码了: 具体代码如下所示: public class MIUIUtil ...
- android 画中画 分屏 区别,小米MIUI系统手机分屏VS画中画功能,教你游戏聊天两不误...
原标题:小米MIUI系统手机分屏VS画中画功能,教你游戏聊天两不误 MIUI9上曾经为我们带来了分屏功能,这项功能的加入,使得可以在一个屏幕上同时干两件不同的事情,例如同时聊QQ和微信,或者聊天的同时 ...
- android 关闭神隐模式,爱玩机 | 小米miui系统神隐模式你知道,那么极致神隐模式呢?...
原标题:爱玩机 | 小米miui系统神隐模式你知道,那么极致神隐模式呢? 用过小米miui系统的都知道在miui设置里面的电量和性能,有一个神隐模式,用处就是帮你关掉你后台的软件,你可以为每一个应用进 ...
- 小米 MIUI系统 安装包 刷机
首先说,小mi会不给老一点得机子推送新miui系统慢一些,但是为了让大家满足自己得迫切体验感,会将安装包发到官网上 ,让大家自行下载安装,这也增加了可玩性. 如果你想早先体验,我觉得无需去某宝上去买账 ...
最新文章
- 博士申请 | 香港中文大学王思博助理教授招收图表示学习方向全奖博士生
- PPT 下载 | 神策数据曹犟:数据驱动从方法到实践
- lucene 入门整理
- 数据洪流时代,开发者这样硬核突围!
- 12-1。。。面试的一些体会吧
- 突然不能访问服务器未响应,windows 访问不服务器未响应
- [转]远远走来一个绿茶婊
- javascript 编程指南
- 自定义View:悬浮球与加速球
- elasticSearch创建索引库、映射、文档
- 程序哨兵----誓把流氓软件赶出我们的电脑!
- PhpStorm 正则 小写变大写
- 国际海运出口的操作流程是怎样的?
- 最佳化三维建模与重构中的神经网络先验
- 【牛投客】:牛投客经过三年的投资
- MATLAB | 官方自带的绘图代码生成功能咋用
- 升米恩斗米仇,驳”开源侵略论”
- 将算法写成程序的方法
- linux相对路径查看文件是否存在,2 linux笔记 文件目录管理
- 微波、超短波、短波、中波、长波的频率(波长)
热门文章
- php的和谐脏话,大司马仅有的两次说脏话,听完网友笑出声,直播效果一片和谐!...
- sap查询所有事物代码
- Uva 514 Rails
- LTE/NB-IoT 常用3GPP协议导读
- 树莓派如何与物联网平台交互(搭建一个树莓派网关)(一)
- sigaction函数中关于sa_mask的解释
- TL494电源芯片使用记录分享
- STM32的引脚模式
- jackson序列化错误 get类型方法名的坑 [com.fasterxml.jackson.databind.exc.InvalidDefinitionException]
- 你知道:学校门口开什么店赚钱吗?分享学校门口暴利生意!