用新架构适配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

大专栏  用新架构适配MI3中遇到的各种坑d class="gutter">
1
2
3
.class public Lmiui/view/VolumePanel;
.super Landroid/os/Handler;
.source "VolumePanel.java"

从以上信息可以看出miui的VolumePanel和安卓原生的VolumePanel毫无瓜葛.
安卓的VolumePanel

1
2
3
.class public Landroid/view/VolumePanel;
.super Landroid/os/Handler;
.source "VolumePanel.java"

抱着试一试的态度,依照上面的解决思路,去找miui的VolumePanel实例化的地方,这个由于经常做,所以给出类名AudioService.里面有该类的实例化,和调用该类的各种方法,解决本问题的思路也是调回原生,但是事实上并不是这么简单,因为里面还有调用,自己的方法,所以为了能够运行,还需要补接口到安卓原生.最后解决改问题.下面给出部分改动对比.


第三个就是令人抓狂的Editor.


这个类被改的面目全非,问题其实是上面两个问题的综合,调用走了自己的另一路,而且在继承方面也是一样的问题,这个该起来确实需要耐心,这里就不详细讲了,因为太过于繁琐了.不是简单几句话都能就能说清楚的,我现在也是似懂非懂的.不过还好问题解决.

用新架构适配MI3中遇到的各种坑的更多相关文章

  1. React Native之新架构中的Turbo Module实现原理分析

    有段时间没更新博客了,之前计划由浅到深.从应用到原理,更新一些RN的相关博客.之前陆续的更新了6篇RN应用的相关博客(传送门),后边因时间问题没有继续更新.主要是平时空余时间都用来帮着带娃了,不过还是 ...

  2. InfoQ一波文章:菜鸟核心技术/Intel发布CPU新架构3D堆栈法/BDL/PaddlePaddle/百度第三代Spider/Tera

    菜鸟智慧新物流核心技术全解析   孟靖 阅读数:63192018 年 12 月 14 日 16:00   2018 年天猫双 11 全球狂欢节已正式落下帷幕,最终成交额定格在 2135 亿元,物流订单 ...

  3. "大中台、小前台”新架构下,阿里大数据接下来怎么玩? (2016-01-05 11:39:50)

    "大中台.小前台”新架构下,阿里大数据接下来怎么玩?_炬鼎力_新浪博客 http://blog.sina.com.cn/s/blog_1427354e00102vzyq.html " ...

  4. 揭秘 Flink 1.9 新架构,Blink Planner 你会用了吗?

    本文为 Apache Flink 新版本重大功能特性解读之 Flink SQL 系列文章的开篇,Flink SQL 系列文章由其核心贡献者们分享,涵盖基础知识.实践.调优.内部实现等各个方面,带你由浅 ...

  5. 开篇 | 揭秘 Flink 1.9 新架构,Blink Planner 你会用了吗?

    本文为 Apache Flink 新版本重大功能特性解读之 Flink SQL 系列文章的开篇,Flink SQL 系列文章由其核心贡献者们分享,涵盖基础知识.实践.调优.内部实现等各个方面,带你由浅 ...

  6. CesiumJS 2022^ 源码解读[6] - 三维模型(ModelExperimental)新架构

    目录 1. ModelExperimental 的缓存机制 1.1. 缓存池 ResourceCache 1.2. 缓存对象的键设计 ResourceCacheKey 2. 三维模型的加载与解析 2. ...

  7. Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中

    前言: 关于.jar文件: 平时我们Android项目开发中经常会用到第三方的.jar文件. 其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(r ...

  8. php 执行的目录到新的 directory 目录中

    chdir : 改变目录. dir : 目录类别类. closedir : 关闭目录 handle. opendir : 打开目录 handle. readdir : 读取目录 handle. rew ...

  9. 本函数用来改变目前 php 执行的目录到新的 directory 目录中

    chdir : 改变目录. dir : 目录类别类. closedir : 关闭目录 handle. opendir : 打开目录 handle. readdir : 读取目录 handle. rew ...

随机推荐

  1. JS 判断移动端与PC端

    js判断移动端与pc端   这里介绍下使用device.js插件来判断移动端设备 地址:https://github.com/matthewhudson/device.js 示例: 1 2 3 4 5 ...

  2. 基于JSP开发医院预约挂号系统 Java源码

    开发环境: Windows操作系统 开发工具: Eclipse+Jdk+Tomcat+MYSQL数据库 运行效果图: 源码及原文链接:http://javadao.xyz/forum.php?mod= ...

  3. Apache Commons Lang之日期时间工具类

    码农不识Apache,码尽一生也枉然. FastDateFormat FastDateFormat是一个快速且线程安全的时间操作类,它完全可以替代SimpleDateFromat.因为是线程安全的,所 ...

  4. springboot的linux-docker部署

    将springboot jar应用打包成镜像并在docker运行成容器 https://blog.csdn.net/keepd/article/details/80569797 Docker安装(De ...

  5. Right journal|First-class paper|Mediocre paper|figure legend |Discussion|Introduction

    外界来审阅你的工作 首先确立Hypothesis.Inventory.Hypothesis:不一定是最后的假设.Inventory围绕核心问题,找unique,可以与本组相同但是与其他实验室不同. 选 ...

  6. html5 一些好用的原生事件

    计算机技术发展这么多年, 有些方面太老了,不适合新时代的发展, 使用新的规范,更方便开发和使用, 提高各方使用人的工作效率, 何乐而不为 drag drop html5新增属性 某些操作使用拖拽比较方 ...

  7. 不同SQL数据库之间表数据的实时同步-发布与订阅

    https://blog.csdn.net/rand_muse/article/details/81326879 上述文章中,如果是实时同步,选择  事务发布即可 在快照代理 那里,不需要勾选  运行 ...

  8. Python常用的数据结构详解

    数据结构:通俗点说,就是储存大量数据的容器.这里主要介绍Python的4种基本数据结构:列表.字典.元组.集合. 格式如下: 列表:list = [val1,val2,val3,val4],用中括号: ...

  9. relieved|auction|calculate|campaign|charge for |chartered

    ADJ-GRADED 感到宽慰的;感到安心的;宽心的If you are relieved, you feel happy because something unpleasant has not h ...

  10. python常用包

    今日所得 collections模块 时间模块 random模块 os模块 sys模块 序列化模块 subprocess模块 collections模块 namedtuple:具名元组 #定义方式一: ...