在Xperia XZ上刷入AOSP

在Xperia XZ上刷入AOSP

教程作者:StaticGTF

原文链接:https://sx.ix5.org/info/flashing-aosp-on-xperia-xz/

汉化:酷安 @北冥无鱼矣/CSDN @Lenvers

修订版本:1.1(2021-09-08)

本人第一次尝试汉化,水平有限,部分专有名词可能翻译有误,不对之处还望指正!

所有脚注均为本人增补,与原文无关。

请严格遵守以下步骤,并以正确的顺序来进行操作。

操作简览:

对于了解并熟知相关步骤的人,可以直接参考本简览步骤,否则请从第一步开始阅读。

1.请升级或刷入最新的官方系统,然后解锁Bootloader

2.从SONY开发者世界下载V9版本的OEM文件,进入fastboot将OEM文件刷入OEM分区

3.刷入此修复后的TWRP,修复者为Artem Labazov(@ ab123321)1

4.在TWRP中刷入最新的AOSP ROM

嗯,就是这样。

1.计算机上的安装准备

在准备刷入ROM之前,你需要准备一台可以正常使用的计算机且已安装好相关驱动,用来给设备刷入最新的FTF文件,Recovery和OEM文件。

如何设置及进入Fastboot模式,有许多的其他教程可以参考,但此教程对大部分人来说足够用,所以就不一一阐述了。

在Windows系统里:

将以下软件下载并安装到您的计算机上:

来自于XDA开发者的Minimal ADB and FastbootAndroxyde开发的线刷工具FlashTool

您还需要安装以下驱动:

Xperia XZ 驱动程序

Flashmode 驱动程序

Fastboot(S1)驱动程序

驱动程序位于FlashTool安装文件夹中,您可能需要临时禁用驱动签名验证2并重新启动计算机,才能安装这些驱动程序。

在Linux系统里:

下载Androxyde开发的线刷工具FlashTool

然后,通过不同Linux发行版的软件包管理器安装Fastboot和ADB工具。

在Ubuntu上:

apt install android-tools-adb android-tools-fastboot

在Arch Linux上:

pacman -Syu android-tools

2.下载必要的文件

在开始刷机之前,请确保您已经在计算机上下载或安装了所需的所有文件。最好把所有需要的img文件都放在同一个文件夹中,这样在刷入的时候就不会因为输入各种路径而麻烦(比如放在包含fastboot.exe的文件夹里)。3

下载索尼官方的最新固件(以.FTF为后缀的文件),它的命名规则应该是在后面有.184或者.192的后缀,抑或是以地区为结尾4。具体可以参阅此最新固件列表。您还可以使用XperiFirm附带的下载工具FlashTool进行下载。

刷入此修复后的TWRP,修复者为Artem Labazov(@ ab123321)1

在Sony开发者世界里下载适用于代号为tone、于Android Pie、内核版本为4.9的OEM文件5,此文件的文件名格式是SW_binaries_for_Xperia_Android_9.0_2.3.2_v$VERSION_tone.zip,其中$VERSION目前为V9

在sx.ix5.org上下载最新的AOSP 10

可选:从XDA上下载最新的稳定版Magisk

可选:从opengapps.org里下载OpenGApps。您需要选择Android 10.06、ARM64,除此之外,您还可以根据您的需求选择不同的版本,我建议选pico,因为它的体积最小。

3.解锁Bootloader

在刷机之前,您需要解锁您设备的Bootloader,请仔细阅读此网页的内容,并知晓解锁Bootloader所带来一切可能的后果。

如果您设备上的Bootloader已经被解锁,则可以直接跳至下一步。

⚠警告!

在解锁Bootloader之前,请先备份您设备上的Trim Area(即"TA"分区),解锁Bootloader是一个不可逆的过程7,DRM密钥以及设备保修都可能会永久丢失!

如果您设备的Bootloader尚未解锁,您则需要访问Sony设备解锁页面来解锁Bootloader。

4.线刷最新的固件

通过USB数据线连接您的设备与计算机,在计算机上完成以下步骤。

如果您先前已升级到最新的官方固件(即.192)并且仅进行了简单的测试,例如刷入了OmniROM8,则无需再重新线刷固件,您可以直接跳过此步骤。

您可以通过以下方法进入S1刷机模式9:完全关闭设备电源,然后按住音量-键不要松手,使用USB数据线将设备连接至电脑,直至设备的呼吸灯变为绿色后方可松开按键。

随后,您便可以使用Androxyde开发的FlashTool刷入最新可用的、基于Android Oreo的、文件后缀为.FTF的线刷固件。

(FlashTool的使用教程请戳这)10

5.刷入TWRP Recovery

您可以通过以下方法进入Fastboot模式11:完全关闭设备电源,然后按住音量+键不要松手,使用USB数据线将设备连接至电脑,直至设备的呼吸灯变为蓝色后方可松开按键。

进入先前准备好的ADB命令行环境 ,执行以下指令:

fastboot flash recovery twrp-3.2.1-0-kagura-ab-x.img

(您必须使用此修复后的recovery进行后续操作,因为正式版的TWRP无法挂载/data分区或处理加密)

执行完指令暂时不要退出命令行与断开手机连接,请先继续下一步(如果没有刷OEM的需要的话则可以跳过下一步)

6.刷入OEM文件

在刷入前请先检查是否解压了从索尼OEM列表中下载的zip文件,并得到以.img为后缀的文件,再使用以下指令刷入索尼的OEM文件:

(这里需要注意一下,刷入recovery和OEM时的目标分区是不一样的!)

fastboot flash oem SW_binaries_for_Xperia_Android_9.0_2.3.2_v3_tone.img

7.TWRP Recovery中的操作

从设备上拔下USB数据线,并检查设备是否完全断电。然后同时按住音量-键和电源键启动设备进入Recovery模式,当出现白色的Sony logo时,松开所有的按键。

7.1 清除数据(可选,但强烈建议执行此操作)

请在TWRP中清除/data、/cache和Dalvik的缓存:

开机引导至TWRP后,从左向右滑动下方的解锁条,即可启用系统修改。请不要将系统分区标记为“只读”(Read only)!点击主菜单里的“清除”(Wipe)按钮,然后执行恢复出厂设置,依然是从左向右滑动即可继续。(用户的个人文件会依旧保存在内部存储中,但所有原有的应用程序数据会被删除)

如果您是从官方固件准备刷入AOSP,那么您必须执行此操作;如果您是从先前的Android P或者Android Q执行升级操作,则可以跳过此步骤;但是如果遇到问题,那么您至少需要清除一下/cache分区,如果还不能解决问题,请备份好您的重要数据并尝试清除/data分区。

7.2 刷入AOSP ROM

设备开机引导至TWRP后,从左向右滑动下方的解锁条,即可启用系统修改。请不要将系统分区标记为“只读”(Read only)!通过USB数据线将设备连接至计算机,此时设备应出现在Windows资源管理器左侧的设备列表中。将AOSP ROM的zip文件传输到手机的内部存储中。点击“安装”(Install)按钮,并在内部存储中选择AOSP(或基于AOSP)的ROM文件。从左向右滑动即可开始刷入。

7.3 修复/dsp file labels

本步骤仅适用于部分基于Android Pie的类原生ROM,Android 10不再需要此修复程序。

如果您曾经安装过基于Android Oreo的自定义内核ROM(例如OmniROM 8.1),则该dsp分区的SELinux file labels会是错误的。有关更多详细说明,请参阅 SODP文件的改写。

这种情况下,只需要在TWRP中刷入DSP label修复程序即可。

7.4 刷入双卡修复程序(可选)

如果您使用的是双卡设备(F8332),请下载双卡修复程序。

将双卡修复程序的zip文件传输到手机的内部存储中。

点击“安装”(Install)按钮,并在内部存储中选择双卡修复文件。

从左向右滑动即可开始刷入。

7.5 刷入OpenGApps(可选)

如果在刷入GApps后遇到问题,请清除所有的数据,然后再次刷入ROM,且不要再尝试刷入GApps。

将OpenGApps的zip文件传输到手机的内部存储中。

点击“安装”(Install)按钮,并在内部存储中选择OpenGApps的zip文件。

从左向右滑动即可开始刷入。

7.6 刷入Magisk(可选)

如果您需要刷入Magisk,请刷入Magisk v18.1或更高版本,然后再安装Magisk Manager应用程序,安装Magisk模块前请仔细阅读模块说明,确定该模块是否兼容您的设备!

将Magisk的zip文件传输到手机的内部存储中。

点击“安装”(Install)按钮,并在内部存储中选择Magisk的zip文件。

从左向右滑动即可开始刷入。

如果您已刷入Magisk,则手机将在首次启动时可能会再重启一次,这是完全正常的。

8.重新启动

返回TWRP的主页,然后选择“重新启动”(Reboot)。如果TWRP建议您在设备中安装TWRP的应用程序,请拒绝并选择正常重启。

您的设备将需要一段时间才能完成启动(约5分钟或更长时间),等待其进入系统欢迎界面或主页即可。

注意!

如果可以,还请阅读一下完整的bug列表!12

可选部分

您可以尝试OpenCamera,Snap Camera(来自LineageOS)或众多 Google Camera移植版之一

故障排除

如果您的设备无法通过白色的Sony logo引导开机,或长时间卡在Android开机动画上,请尝试同时按住电源键和音量+键直到出现第一次振动,这个操作将会强制重启设备。

如果您需要重新进入TWRP,则必须先关闭手机电源。在任何状态下,只要按住电源键和音量+键直到出现三次振动,设备便可强制关机。然后松开按钮并按住电源键和音量-键即可引导至TWRP。

Magisk

如果您无法安装Magisk模块,或者安装完Magisk模块无法正常开机/使用,则它们可能与您当前使用的ROM不兼容。在上传错误报告之前,请删除所有Magisk模块(通过刷入Magisk卸载包卸载Magisk)(最新版的Magisk已经不需要单独下载卸载包了,如果需要卸载Magisk请直接刷入Magisk安装包)13,然后尝试重启设备。

加密无效

请参阅下面的“格式化/data“。

格式化/data

如果仍然无法正常启动AOSP,请尝试格式化/data分区。

如果您在使用索尼官方固件时打开了加密功能,则可能在您使用AOSP前还必须格式化内部存储,这是因为官方固件似乎使用了与AOSP不同的加密版本或算法,从Android Nougat14开始,默认情况下,官方的固件都会进行加密。

在格式化/data分区前,请将您所有的照片,应用程序等备份到计算机,因为这将完全清除您的内部存储!

对于32GB(单SIM卡)设备,请执行以下指令:

fastboot format:ext4:0x58dffc000 userdata

对于64GB(双SIM卡)设备,请执行以下指令:

fastboot format:ext4:0xcd5bfc000 userdata

对于上述指令,请在ADB与Fastboot环境下执行,因为在TWRP中执行清除操作并没有为crypto footer(需要32MB的空间)留下足够的空间,而您则需要运行全磁盘加密(FDE)。

以下是用于计算fastboot format所需十六进制值的方法,也包括用于crypto footer的空间:

# Single-SIM:

# Reserve space for data encryption (23857201152-16384)

BOARD_USERDATAIMAGE_PARTITION_SIZE := 23857184768

# Dual-SIM:

# Reserve space for data encryption (55125737472-16384)

BOARD_USERDATAIMAGE_PARTITION_SIZE := 55125721088

然后使用Python计算十六进制值:

$ python

hex(23857184768)

'0x58dffc000'

hex(55125721088)

'0xcd5bfc000'

非常感谢StaticGTF 编写了本指南的大部分内容!

版权声明:本文为StaticGTF原创,Lenvers翻译,依据 CC BY-SA 4.0 许可证进行授权,转载请附上出处链接及本声明。

此教程所使用的修复版的TWRP已经更换了好几个版本,这个应该是目前最新的 ↩︎ ↩︎

操作方法可以参阅这里 ↩︎

就是Minimal ADB的那个安装路径下,如果你先前已经安装过类似的ADB工具,也可以移步至那个ADB工具的安装路径下,把所需的img文件都放在那里,这样可以减少很多不必要的麻烦) ↩︎

比如XZ目前的最新固件版本应该是41.3.A.2.192,而且国行版固件的后面有CN的结尾 ↩︎

除此之外,如果你想刷入其他基于旧版AOSP的ROM,请前往SONY OEM文件下载列表中下载代号为tone且你所需要的对应Android版本的OEM文件 ↩︎

如果你想刷入其他基于旧版AOSP的ROM,请选择你所需要的Android版本 ↩︎

原文如此,但据我的了解,只要TA备份还在就有办法完美回锁(仅限自己的TA备份) ↩︎

原文如此 ↩︎

即俗称的“绿灯模式” ↩︎

教程为英文版,之后如果发现有比较好的中文教程可以替换成中文的 ↩︎

即俗称的“蓝灯模式” ↩︎

未汉化 ↩︎

如果你安装的是新版Magisk,在TWRP的“终端”(terminal)里可以访问data/adb/modules目录尝试删除导致异常的模块而不必卸载整个Magisk,旧版Magisk可能需要安装“mm管理器”这个模块,在“终端”(terminal)里使用 * /mm 指令才能尝试删除其他模块 ↩︎

即牛轧糖,Android 7.x的代号,包括前文的Oreo(奥利奥,Android 8.x)、Pie(派,Android 9)与Q(Android 10)都是Android版本的代号。 ↩︎

[an error occurred while processing the directive]