用新架构适配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. 数据库T-SQL语言操作(T-SQL语句、数据库、表、视图、索引)

    T-SQL语言 按用途分四部分 数据定义语言(CREATE,DROP,ALTER) 数据操作语言(INSERT,DELETE,UPDATE) 数据查询语言(SELECT) 数据控制语言(GRANT,R ...

  2. 在Eclipse下远程调试Beagleboneblack

    安装调试器 1. gdbserver 2. gdb-multiarch 建立工程 新建一个cpp工程,ToolChains选择Cross GCC 这里使用的是arm-linux-gnueabihf-的 ...

  3. H - Mr. Panda and Birthday Song Gym - 101775H (动态规划)

    Mrs. Panda’s birthday is coming. Mr. Panda wants to compose a song as gift for her birthday. It is k ...

  4. DFS---迷宫问题

    #include<iostream> #include<string> #include<cstring> using namespace std;//dfs in ...

  5. [ZJOI2019]Minimax搜索(线段树+动态DP+树剖)

    为什么我怎么看都只会10pts?再看还是只会50~70?只会O(n2(R-L+1))/O(nlogn(R-L+1))……一眼看动态DP可还是不会做…… 根节点的答案是叶子传上来的,所以对于L=R的数据 ...

  6. 基于rtmp的移动端推流解决方案

    因工作需要,及考虑成本因素,需要探索一套免费的移动端基于rtmp推流的直播解决方案,过程虽稍显曲折,但最终还是完成了目标.在这里将记录下来,以便日后查阅. 总体思路 移动端推流(RTMP) ---&g ...

  7. java 计算一个月有多少天和多少周

    import java.util.Calendar; /** * 功能概述:计算指定年月的天数和周数<br> */ public class Test{ public static voi ...

  8. js之意想不到的结果

    js 是弱类型语言 ,在进行计算时 如果遇到不能计算的单位,就会进行默认转换 1.typeof NaN  结果为 “number”  原因:NaN 表示 不是不是一个数字(Not a Number), ...

  9. springboot学习笔记:3.配置文件使用概要

    Spring Boot允许外化(externalize)你的配置,这样你能够在不同的环境下使用相同的代码. 你可以使用properties文件,YAML文件,环境变量和命令行参数来外化配置.使用@Va ...

  10. bug宝典linux篇 LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory(转)

    升级glibc库后,使用xShell登录linux,提示: Connecting to ... Connection established. To escape to local shell, pr ...