用新架构适配MI3中遇到的各种坑
用新架构适配MI3中遇到的各种坑
首先不得不说hendy架构的强大之处, mi3也直接开机但是遇到各种坑,不能怪架构不够强大,只有说miui定制化太高.
下面详细说一下mi3适配中的各种坑.有些坑会附带点log信息.
PhonewindowManger 通过intent启动 qshutdown.apk
首先贴出异常log
从log中可以看出来是缺少mContext字段造成无法通过反射调用.但是在本类中确实有mContext字段声明,但是为何反射调用不到呢,由于对java的反射机制并不是太熟悉,只会简单的使用.所以刚开始也是丈二和尚摸不到头脑.但是细心点发现PhoneWindowManager该类有个子类, 难道是子类存在的原因,抱着试一试的态度,去干掉子类的对象的实例化,换成PhoneWindowManager的实例化,结果误打误撞解决这个问题, 至于为何,这个有待研究反射的用法,才能给出答案,下面给出修改之后于修改之前的对比.
但是这样改也是有后果的, 造成无法换出RecentApp界面…不过后来通过修改配置文件解决改问题,暂时没发现什么不良后果.
音量面板VolumePanel类
用TPS做好tos后,音量面板直接还是miui的, 其实这个一点都不出呼我的意料,因为miui的音量面板是VolumePanel,但是包名不一样.所以及时和对地方.也是一样不起效,因为就没有调用.对于这个问题解决思路其实和上面的类似,但是这两个问题从本质上是不一样,下面给出差异.
miui的VolumePanel
  | 
从以上信息可以看出miui的VolumePanel和安卓原生的VolumePanel毫无瓜葛.
安卓的VolumePanel
  | 
  | 
抱着试一试的态度,依照上面的解决思路,去找miui的VolumePanel实例化的地方,这个由于经常做,所以给出类名AudioService.里面有该类的实例化,和调用该类的各种方法,解决本问题的思路也是调回原生,但是事实上并不是这么简单,因为里面还有调用,自己的方法,所以为了能够运行,还需要补接口到安卓原生.最后解决改问题.下面给出部分改动对比.
第三个就是令人抓狂的Editor.
这个类被改的面目全非,问题其实是上面两个问题的综合,调用走了自己的另一路,而且在继承方面也是一样的问题,这个该起来确实需要耐心,这里就不详细讲了,因为太过于繁琐了.不是简单几句话都能就能说清楚的,我现在也是似懂非懂的.不过还好问题解决.
用新架构适配MI3中遇到的各种坑的更多相关文章
- React Native之新架构中的Turbo Module实现原理分析
		
有段时间没更新博客了,之前计划由浅到深.从应用到原理,更新一些RN的相关博客.之前陆续的更新了6篇RN应用的相关博客(传送门),后边因时间问题没有继续更新.主要是平时空余时间都用来帮着带娃了,不过还是 ...
 - InfoQ一波文章:菜鸟核心技术/Intel发布CPU新架构3D堆栈法/BDL/PaddlePaddle/百度第三代Spider/Tera
		
菜鸟智慧新物流核心技术全解析 孟靖 阅读数:63192018 年 12 月 14 日 16:00 2018 年天猫双 11 全球狂欢节已正式落下帷幕,最终成交额定格在 2135 亿元,物流订单 ...
 - "大中台、小前台”新架构下,阿里大数据接下来怎么玩?   (2016-01-05 11:39:50)
		
"大中台.小前台”新架构下,阿里大数据接下来怎么玩?_炬鼎力_新浪博客 http://blog.sina.com.cn/s/blog_1427354e00102vzyq.html " ...
 - 揭秘 Flink 1.9 新架构,Blink Planner 你会用了吗?
		
本文为 Apache Flink 新版本重大功能特性解读之 Flink SQL 系列文章的开篇,Flink SQL 系列文章由其核心贡献者们分享,涵盖基础知识.实践.调优.内部实现等各个方面,带你由浅 ...
 - 开篇 | 揭秘 Flink 1.9 新架构,Blink Planner 你会用了吗?
		
本文为 Apache Flink 新版本重大功能特性解读之 Flink SQL 系列文章的开篇,Flink SQL 系列文章由其核心贡献者们分享,涵盖基础知识.实践.调优.内部实现等各个方面,带你由浅 ...
 - CesiumJS 2022^ 源码解读[6] - 三维模型(ModelExperimental)新架构
		
目录 1. ModelExperimental 的缓存机制 1.1. 缓存池 ResourceCache 1.2. 缓存对象的键设计 ResourceCacheKey 2. 三维模型的加载与解析 2. ...
 - Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中
		
前言: 关于.jar文件: 平时我们Android项目开发中经常会用到第三方的.jar文件. 其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(r ...
 - php 执行的目录到新的 directory 目录中
		
chdir : 改变目录. dir : 目录类别类. closedir : 关闭目录 handle. opendir : 打开目录 handle. readdir : 读取目录 handle. rew ...
 - 本函数用来改变目前 php 执行的目录到新的 directory 目录中
		
chdir : 改变目录. dir : 目录类别类. closedir : 关闭目录 handle. opendir : 打开目录 handle. readdir : 读取目录 handle. rew ...
 
随机推荐
- uniapp结合小程序第三方插件“WechatSI”实现语音识别功能,进而实现终端控制
			
最近在用soket实现终端控制器的功能,然后就想用语音控制,这样显得更AI WechatSI在manifest.json中配置: 在vue中插入如下展示代码: <view class=" ...
 - Tidb go mac 上开发环境搭建
			
1.安装golang 运行环境 2.安装lite ide 工具 3.安装dep 包管理工具 4.安装delve debuger 调试工具 我用的是mac hight sierra 10.13 版, 会 ...
 - 33)new和delete关键字
			
---------------------------------------------------------------------------------------------------- ...
 - C#chart图表的应用
			
在图表中,x轴代表类别,y轴代表数值(好比类与他们的属性) 这是数据库中的数据,下面我们选前5辆车,在图表中显示他们的名字,油耗,功率,价格 创建查询数据的类 class CarDA { public ...
 - 容斥原理的(二进制思想和质因子分解+模板)hdu4135+ecf81.D
			
题:http://acm.hdu.edu.cn/showproblem.php?pid=4135 题意:求[A,B]与N互质的数的个数 #include<iostream> #includ ...
 - Papa开启“点播孙子”模式,新型老年人服务能在国内扎根吗?
			
"互联网+"对多个行业的全面赋能和渗入,的确让我们的生活与工作处处充满了便利.很多"跑断腿"才能办的事,现在只要在PC.智能手机上滑动鼠标.点击屏幕就能轻松搞定 ...
 - ubuntu 更新源 或者 apt-get install 出错404 not found ,Failed to fetch
			
1.考虑是不是能上网 2.用apt-get update ,然后再试试apt-get install 如果apt-get update 也出现很多 404 not found 或者 failed to ...
 - PAT甲级——1006 Sign In and Sign Out
			
PATA1006 Sign In and Sign Out At the beginning of every day, the first person who signs in the compu ...
 - Linux基本操作_20191117
			
VMware和Ubuntu的安装, 想来想去,还是需要安装,不能老是使用Windows的,后面还有很多都要用到Linux系统的,这个可以说是开发人员必备的了, 基本的使用: 1,Windows下面C: ...
 - VS制作dll、def文件的使用、dll加入工程使用
			
1.VS新建工程,在选项的时候,选择dll和空项目,保持干净的dll库: 创建完以后,添加头文件以及源文件. 2.将外部模块使用的接口导出: (1)函数导出: __declspec(dllexport ...