Xperia X 折腾日记

发表于 2017-10-02   |   分类于 默认分类   |   访问: 5,818 次

Preface

之前买了一台Xperia X dual版,就是F5122。之前为了Xposed弄了个棉花糖来爽,不过越用约发现不稳定——指纹硬件时不时坏、相机时不时被占用、发热也很严重(理论上不应该这么严重的)、运行起来也很慢。

下载固件

  1. 下载个Flashtool,记得更新到最新版本。

  2. 打开之,选择工具栏那个球状的按钮。

  3. 在打开的XperiFirm里面,选择Xperia X (suzu)里面的F5122 dual,选择自己喜欢的版本(我还是选择了香港版本),我写这篇日志的时候还是34.3.A.0.217版本。

  4. 选中版本之后,点击右侧手机下面的版本号开始下载。如果下载速度比较慢,可以选择使用代理加速一下。

  5. 下载完成之后关闭XperiFirm,然后可能提示什么准备之类的,确认就好。

安装电脑驱动

如果电脑没有安装手机的驱动,就需要手动安装一下了,不然Flashtool可能不会识别到设备。

  1. 在Windows 8或10的系统,打开系统设置->更新和安全->恢复->高级启动->立即重启。
  2. 然后选择高级启动菜单。等系统重启之后,然后选择禁用驱动签名开机。
  3. 打开Flashtool的安装目录里面的drivers目录,打开里面的安装包。
  4. 安装时候选择前两项就ok了。如果系统提示是否需要安装,当然选择是。

刷入TWRP

  1. 首先是刷个TWRP。我之前刷棉花糖的时候还没有这货。

  2. XDA这个帖子下载最新的TWRP(写帖子的时候还是3.1.1-suzu-2017.08.22)。

  3. 注意校准文件MD5,不然下坏了就惨了。

  4. 拔出数据线,关闭手机后等待五秒钟,然后按住音量+插入手机数据线。

  5. 这时候手机应该是绿灯。

  6. 打开Flashtool安装目录里面的x10flasher_lib文件夹,在没有选中任何文件的时候,按住shift右键空白地方,在此打开cmd或者在此打开powershell。

  7. 把下载下来的TWRP文件复制到文件夹里面。

  8. 在powershell敲入

    ./fastboot flash recovery twrp-3.1.1-suzu-*.img

    记得把*换成对应的字符串就好了。

  9. 显示okay字眼之后,拔掉手机。然后按住音量-和电源键开机就能进入TWRP了。

  10. *接下来可以备份data文件夹、用MTP传输文件之类的。另外我的OTG似乎不怎么好用。

刷入新系统

  1. 搞定TWRP之后,我们就可以刷入新系统了。首先拔数据线、关闭手机。
  2. 按住音量-插入手机,手机应该是蓝灯亮。
  3. 打开Flashtool,点击雷电按钮,选择flashmode。
  4. 选择下好的固件。这里这里,Wipe字眼一下的,如果你想保留你的应用程序、用户数据、照片视频什么的,都不要勾。如果不想保留,就都勾上,除了simlock
  5. 然后点击Flash,耐心等待就可以。如果有提问什么是否继续什么的,就点确认就好了。
  6. 系统重启之后,就可以用啦~。不过没有Root呢。

Root it!

  1. 这个帖子下载对应版本的Rooted kernel。我这里选择的是217的。你们按照自己选择的固件版本下载。
    当然,这位大神在MEGA上面提供了很多历史版本的下载。说一下版本的区别,带_SU的就是有SuperSu的,不然不带。个人推荐用带_SU的,因为SuperSu不同版本可能对Xperia兼容不一样。不过我这里选择没有_SU的,因为我后面需要破解selinux。

  2. 打开Flashtool,选择火箭按钮,选择fastboot mood。

  3. 手机关机拔掉数据线。

  4. 选择Select kernel to flash

  5. 按住音量+插入手机。

  6. 选择下载好的Kernel烧进去,然后手机启动后就是Root好的啦!

  7. *如果下的不是带_SU版本的,需要手动进入Recovery刷SuperSU的zip包。我写贴时候还是有Xperia专用版的,请仔细观察不要下错,不然可能会bootloop。

  8. *或者选择用Recovery刷入Magisk模块。注意SuperSU和Magisk都有root,两者会冲突,不能同时使用。我用Magisk是为了破解selinux为permissive,因为后面安装字体工具需要使用。

*去除签名认证

  1. Root好其实就可以干很多事儿了。不过我还想去掉安卓的签名验证功能,这样可以让手机方便安装Mod应用或者降级。我其实是为了安装一个日版系统自带的字体管理工具。

  2. 用文件管理器(个人推荐Solid Explorer),拿出/system/framwork/ota/arm64/services.odex之后,删除源文件。

  3. 拿出系统里面/system/framework文件文件夹

  4. 下载smali和baksmali,然后再目录下打开终端:

    java -jar baksmali-2.2.1.jar de services.odex -d framework\arm64
  5. 找到/com/android/server/pm/PackageManagerService.smali,用文本编辑器(推荐Notepad++)打开。

    (下面步骤不是每个机子都一样,自己结合一下汇编知识(其实也不是汇编)修改一下就好了)

  6. 找到.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
  7. 修改成:

    .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
  8. 保存修改,终端输入

    java -jar smali-2.2.1.jar assemble .\out -o classes.dex
  9. 把这个classes.dex放到services.jar

  10. 然后放回/system/framework/里面,修改权限为644。重启手机。

*添加字体管理功能

  1. 去除签名认证功能之后,从这个帖子下载自己喜欢的zip包。
  2. 安装Magisk模块SELinux Permissive Script
  3. 重启到recovery模式,然后刷入zip包。清除缓存。
  4. 重新开机就能见到系统设置、显示里面有字体功能了。
  5. 制作自己的字体请参照原帖

*双sim卡+SD卡(三卡合一)

  1. 自己参照网上的制作帖子或者视频参考制作细节。

  2. 插入之后会发现要么一个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

然后重启。

安装xposed

哇咔咔,rovo89更新了xposed了。可以使用magisk版的xposed,或者直接卡刷xposed也可以。
经过测试:magisk版的xposed v88.0翻车;
卡刷版xposed v88.1成功。
没有测试过magisk版本的xposed v88.1。有空可能会尝试一下。

发表新评论

© 2024 Powered by Typecho & Theme Quark
粤ICP备17055048号