记录我是怎样把小米平板4(MIUI9.6)刷成开发板+获取root的

需求

实现一个app在小米平板4(MIUI9.6)上开机自动启动,如此而已。
然鹅,折腾的路确很长。

尝试一

作为一个半生熟的Android开发狗,那么开机启动一个app还不简单?我新建一个BootReceiver,我再申请权限android.permission.RECEIVE_BOOT_COMPLETED,我再声明Activity、Service、Intent什么的blablabla,整个流程做安卓开发的你一定不会不清楚,反正度娘是妥妥儿的告诉我。但是折腾完发现,无论如何就是不好死?开机app不启动,于是打开百度我会搜索这样的关键字“Android app 开机启动”,然后会找到这样的文章: https://blog.csdn.net/mmmccc000/article/details/52626075/ 其中你反复验证启动失败的原因:是不是Fast Boot模式?是不是权限添加的不对?是不是应用默认装到了sd卡里,我怎么样才能不装到sd卡而装到系统空间?各种各样的疑问,各种各样的尝试,但最后的结果就一个:还是不行。


尝试二

分割线分割前生,前生事此不再提,也就说使用开机广播那一套不知道是不行,还是还需要另外的协助?自省一下,前提条件是在小米平板4上装可以自动启动的app,那么小米平板4目前运行的是“MIUI9.6稳定版”,小米的系统肯定是深度定制版不知道有多深,但是小米可是有开发板的系统,是支持折腾的,那么问题来了,官网下载开发板地址是多少?此处内心独白:既然前面那套开机广播的脆脆弱弱(我自始至终都没有在模拟器上尝试,不知道为什么,可能是秀逗了),那么我可以不可以直接获取root权限,比如修改个init.d什么的直接就勾起我的Activity?脑回路有些大,但是没大胆就没大产不是。。。所以此处心里想的就是:开发板的系统自带肯定自带root权限,oh yes。。。
那刷小米的官方系统倒是很简单啊,直接设置里面手动选择安装包什么的就可以了,可是选来选取,刷来刷去我发现,账号依然不是root,adb连接到设备su依然不可用。

此处的插曲是,刷机之前需要解设备锁,也就是解锁BL(BootLoader),具体查看“更多设置” -> “开发者选项” -> “设备解锁状态“,如果因为下面这种情况卡住的话,告诉你只要在当前设备上换一个注册时间比较长,活跃度高的小米账号绑定设备,然后重新解锁就行。

请在此设备上登录该账号720小时后再尝试解锁该设备

迷茫时刻

可我真的记得有篇文章说的是小米开发板自带root,百度了N多文章,一天下来,脑子里什么都没有,全是这些内容,你只是个开发人员,你明白app生命周期,但系统原理你是无能为力的。要不淘宝上几十块刷一个吧,可是淘宝上问一下,有说能刷的,有说刷不了的。。。
屁不就刷个鸡?百度不行谷歌我还不行么。。。

尝试三 刷入TWRP

还是Google大法好,让我找到了这篇文章:《How to Install twrp Recovery Root XiaoMi Mi Pad 4》
文章清清爽爽,简单易懂,用到的几个文件清单如下,如果你不能下载的话,可以去这里:链接: https://pan.baidu.com/s/1NfYY2RRPmIwTILekDqv25w 提取码: zthz
1.TWRP 3.2 Xiaomi Mi Pad 4 对应Try.7z包里的recovery.img
2.SuperSu/Magisk
3.adb fast driver Try.7z包里没有这项,adb我觉得你自己能搞定
4.No-verity-opt-Entrypt
5.adb fastboot tools 参考3**

参照着大神的文章,终于一步一步装上了TWRP,中间的过程如:

安装完成后手机是这样的:

然后adb shell进入设备,敲入su,发现$符号变成了#号才明白,root特么的成功了。

尝试四 怎么样把app安装到/system/app中

(以下操作在成功安装TWRP后进行)**

既然机器已经root,那么我就可以乱来了是不是,我就可以直接
(以下操作在重启按住音量增大键+电源键进入TWRP后,选择Advanced->Terminal后进行,直接adb shell是没有vi等功能的)
1.vi init.d
2.GG 回车 a 回车 am start cc.lison.locked
3.Esc :wq
4.reboot
不好意思,轻度vim党,第二步的意思是翻到文件最后并加入am那句命令,然后保存重启,不好死,还是不好死,重启进入TWRP的Terminal发现刚才修改的init.d的内容没有了,改写的内容被覆盖掉了。。。怪不得一直提示我FileSystem read-only之类的,然后在TWRP中尝试文件管理器直接修改文件权限为755,还是不好死。。。又尝试了很多Magisk里的模块,不好死不好死。。。

尝试五

**这一步尝试已经忘了搜索百度的什么关键字,总之是摸石头过河摸到了石头,详参这里:https://www.androidauthority.com/install-user-app-as-system-app-how-to-93522/
既然已经拿到了root权限,adb root + adb remount却不行,但是直接adb shell,然后切换su却可以(adb进入shell之后无法使用vi等工具),这是前提条件。于是又下载了一个ES 文件浏览器,安卓玩家对这个肯定不陌生,Magisk对其进行root授权(好像打开进入app就自动授权root权限),打开ES文件浏览器,把你要开机启动的app拷贝到/system/app目录,然后点击安装,世界就如此美好了。。。

PS。如果要删除安装在/system/app的app的话,只需要删除这个apk文件即可。

# 文章做折腾过程记录,不对任何变砖与异常负责