之前买了一台Xperia X dual版,就是F5122。之前为了Xposed弄了个棉花糖来爽,不过越用约发现不稳定——指纹硬件时不时坏、相机时不时被占用、发热也很严重(理论上不应该这么严重的)、运行起来也很慢。
下载个Flashtool,记得更新到最新版本。
打开之,选择工具栏那个球状的按钮。
在打开的XperiFirm里面,选择Xperia X (suzu)里面的F5122 dual,选择自己喜欢的版本(我还是选择了香港版本),我写这篇日志的时候还是34.3.A.0.217
版本。
选中版本之后,点击右侧手机下面的版本号开始下载。如果下载速度比较慢,可以选择使用代理加速一下。
下载完成之后关闭XperiFirm,然后可能提示什么准备之类的,确认就好。
如果电脑没有安装手机的驱动,就需要手动安装一下了,不然Flashtool可能不会识别到设备。
drivers
目录,打开里面的安装包。首先是刷个TWRP。我之前刷棉花糖的时候还没有这货。
去XDA这个帖子下载最新的TWRP(写帖子的时候还是3.1.1-suzu-2017.08.22
)。
注意校准文件MD5,不然下坏了就惨了。
拔出数据线,关闭手机后等待五秒钟,然后按住音量+
插入手机数据线。
这时候手机应该是绿灯。
打开Flashtool安装目录里面的x10flasher_lib
文件夹,在没有选中任何文件的时候,按住shift右键空白地方,在此打开cmd或者在此打开powershell。
把下载下来的TWRP文件复制到文件夹里面。
在powershell敲入
./fastboot flash recovery twrp-3.1.1-suzu-*.img
记得把*换成对应的字符串就好了。
显示okay字眼之后,拔掉手机。然后按住音量-
和电源键开机就能进入TWRP了。
*接下来可以备份data文件夹、用MTP传输文件之类的。另外我的OTG似乎不怎么好用。
音量-
插入手机,手机应该是蓝灯亮。从这个帖子下载对应版本的Rooted kernel。我这里选择的是217的。你们按照自己选择的固件版本下载。
当然,这位大神在MEGA上面提供了很多历史版本的下载。说一下版本的区别,带_SU的就是有SuperSu的,不然不带。个人推荐用带_SU的,因为SuperSu不同版本可能对Xperia兼容不一样。不过我这里选择没有_SU的,因为我后面需要破解selinux。
打开Flashtool,选择火箭按钮,选择fastboot mood。
手机关机拔掉数据线。
选择Select kernel to flash
按住音量+
插入手机。
选择下载好的Kernel烧进去,然后手机启动后就是Root好的啦!
*如果下的不是带_SU版本的,需要手动进入Recovery刷SuperSU的zip包。我写贴时候还是有Xperia专用版的,请仔细观察不要下错,不然可能会bootloop。
*或者选择用Recovery刷入Magisk模块。注意SuperSU和Magisk都有root,两者会冲突,不能同时使用。我用Magisk是为了破解selinux为permissive,因为后面安装字体工具需要使用。
Root好其实就可以干很多事儿了。不过我还想去掉安卓的签名验证功能,这样可以让手机方便安装Mod应用或者降级。我其实是为了安装一个日版系统自带的字体管理工具。
用文件管理器(个人推荐Solid Explorer),拿出/system/framwork/ota/arm64/services.odex之后,删除源文件。
拿出系统里面/system/framework
文件文件夹
下载smali和baksmali,然后再目录下打开终端:
java -jar baksmali-2.2.1.jar de services.odex -d framework\arm64
找到/com/android/server/pm/PackageManagerService.smali
,用文本编辑器(推荐Notepad++)打开。
(下面步骤不是每个机子都一样,自己结合一下汇编知识(其实也不是汇编)修改一下就好了)
找到.method static compareSignatures
.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
.registers 10
.param p0, "s1" # [Landroid/content/pm/Signature;
.param p1, "s2" # [Landroid/content/pm/Signature;
.prologue
const/4 v3, 0x1
const/4 v5, -0x3
const/4 v4, 0x0
.line 4742
if-nez p0, :cond_a
.line 4743
if-nez p1, :cond_8
:goto_7
return v3
.line 4745
:cond_8
const/4 v3, -0x1
goto :goto_7
.line 4748
:cond_a
if-nez p1, :cond_e
.line 4749
const/4 v3, -0x2
return v3
.line 4752
:cond_e
array-length v6, p0
array-length v7, p1
if-eq v6, v7, :cond_13
.line 4753
return v5
.line 4757
:cond_13
array-length v6, p0
if-ne v6, v3, :cond_24
.line 4758
aget-object v3, p0, v4
aget-object v6, p1, v4
invoke-virtual {v3, v6}, Landroid/content/pm/Signature;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_22
move v3, v4
:goto_21
return v3
:cond_22
move v3, v5
.line 4760
goto :goto_21
.line 4763
:cond_24
new-instance v0, Landroid/util/ArraySet;
invoke-direct {v0}, Landroid/util/ArraySet;-><init>()V
.line 4764
.local v0, "set1":Landroid/util/ArraySet;, "Landroid/util/ArraySet<Landroid/content/pm/Signature;>;"
array-length v6, p0
move v3, v4
:goto_2b
if-ge v3, v6, :cond_35
aget-object v2, p0, v3
.line 4765
.local v2, "sig":Landroid/content/pm/Signature;
invoke-virtual {v0, v2}, Landroid/util/ArraySet;->add(Ljava/lang/Object;)Z
.line 4764
add-int/lit8 v3, v3, 0x1
goto :goto_2b
.line 4767
.end local v2 # "sig":Landroid/content/pm/Signature;
:cond_35
new-instance v1, Landroid/util/ArraySet;
invoke-direct {v1}, Landroid/util/ArraySet;-><init>()V
.line 4768
.local v1, "set2":Landroid/util/ArraySet;, "Landroid/util/ArraySet<Landroid/content/pm/Signature;>;"
array-length v6, p1
move v3, v4
:goto_3c
if-ge v3, v6, :cond_46
aget-object v2, p1, v3
.line 4769
.restart local v2 # "sig":Landroid/content/pm/Signature;
invoke-virtual {v1, v2}, Landroid/util/ArraySet;->add(Ljava/lang/Object;)Z
.line 4768
add-int/lit8 v3, v3, 0x1
goto :goto_3c
.line 4772
.end local v2 # "sig":Landroid/content/pm/Signature;
:cond_46
invoke-virtual {v0, v1}, Landroid/util/ArraySet;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_4d
.line 4773
return v4
.line 4775
:cond_4d
return v5
.end method
修改成:
.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
.locals 11
.param p0, "s1" # [Landroid/content/pm/Signature;
.param p1, "s2" # [Landroid/content/pm/Signature;
.prologue
const/4 v7, 0x0
.line 2934
return v7
.end method
保存修改,终端输入
java -jar smali-2.2.1.jar assemble .\out -o classes.dex
把这个classes.dex放到services.jar
然后放回/system/framework/里面,修改权限为644。重启手机。
自己参照网上的制作帖子或者视频参考制作细节。
插入之后会发现要么一个sim卡不行,要么sd卡不行。其实需要修改build.prop。其中一句
persist.radio.apm_sim_not_pwdn = 1
中的1改为0然后重启就可以。索尼的双卡机子应该都可以这样试试。
在/system/etc/firmware/重命名以下文件(或者直接删除)
tzwidevine.b00
tzwidevine.b01
tzwidevine.b02
tzwidevine.b03
tzwidevine.mdt
然后重启。
哇咔咔,rovo89更新了xposed了。可以使用magisk版的xposed,或者直接卡刷xposed也可以。
经过测试:magisk版的xposed v88.0翻车;
卡刷版xposed v88.1成功。
没有测试过magisk版本的xposed v88.1。有空可能会尝试一下。