zoukankan      html  css  js  c++  java
  • 用新架构适配MI3中遇到的各种坑

    用新架构适配MI3中遇到的各种坑

    首先不得不说hendy架构的强大之处, mi3也直接开机但是遇到各种坑,不能怪架构不够强大,只有说miui定制化太高.
    下面详细说一下mi3适配中的各种坑.有些坑会附带点log信息.

    PhonewindowManger 通过intent启动 qshutdown.apk

    首先贴出异常log
    PhonewindowManager

    从log中可以看出来是缺少mContext字段造成无法通过反射调用.但是在本类中确实有mContext字段声明,但是为何反射调用不到呢,由于对java的反射机制并不是太熟悉,只会简单的使用.所以刚开始也是丈二和尚摸不到头脑.但是细心点发现PhoneWindowManager该类有个子类, 难道是子类存在的原因,抱着试一试的态度,去干掉子类的对象的实例化,换成PhoneWindowManager的实例化,结果误打误撞解决这个问题, 至于为何,这个有待研究反射的用法,才能给出答案,下面给出修改之后于修改之前的对比.
    Policy
    但是这样改也是有后果的, 造成无法换出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.里面有该类的实例化,和调用该类的各种方法,解决本问题的思路也是调回原生,但是事实上并不是这么简单,因为里面还有调用,自己的方法,所以为了能够运行,还需要补接口到安卓原生.最后解决改问题.下面给出部分改动对比.
    Policy


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


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

  • 相关阅读:
    内置对象,监听器,过滤器
    20169201 使用Metaspoit攻击MS08-067实验
    20169201 2016-2017-2《网络攻防》课程总结
    20169201 2016-2017-2 《网络攻防》第十四周作业
    20169201 2016-2017-2 《网络攻防实践》第11周学习总结
    20169201 2016-2017-2 《移动平台开发实践》第10周学习总结
    20169201 2016-2017-2 《网络攻防实践》第10周学习总结
    20169201 实验三 敏捷开发与XP实践报告
    20169201 2016-2017-2 《网络攻防实践》 实验二
    20169201 2016-2017-2 实验一 网络攻防实验环境的搭建与测试
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12247747.html
Copyright © 2011-2022 走看看