-
Notifications
You must be signed in to change notification settings - Fork 5
5.GSI
- TrebleDroid Builders GSI 官方Wiki:Wiki
- GSI镜像列表:GSI List
- Google的文档1:Treble
- Google的文档2:Treble_2
- P10和P10 PLus的GSI官方Wiki页面(本人参与了维护):Wiki
英语水平过关的朋友建议优先读这个。
这个东西我只能用简单语言,非技术化的去解释(水平有限)。GSI全称叫Generic System Image,通用系统镜像。它是基于谷歌在安卓8.0开始的Treble技术。
Treble是由谷歌发起的一项Android模块化项目。它是Android模块化的基础,至少谷歌在blog是这么描述的。
它的目的是减少Android系统碎片化,使得开发会更加简单。大致思想就是,把安卓系统分成几个块。相互之间没有强制关联,你可以任意替换里面的模块,不会出现大的影响。而系统在里面就是一个模块。
这个目的就是为了通用。当然,理论是美好的,现实往往是残酷的。Treble的目的是美好的,但是谷歌放出的GSI系统兼容性还是不高,于是XDA论坛的phhusson主导了一个开源项目:Treble Experimentations。
基于系统是一个模块的思想,那么理论上,如果开发者有能力编译和改造一个AOSP的能力,那么开发者就可以自己开发出通用的系统包。
而Treble Experimentations做到了。
总之,最直接的结果就是,以前手机设备需要专人维护才会有第三方刷机包和类原生刷机包。现在只需要刷入别人制作好的通用镜像就行。
说了这么多,那么GSI就没有缺点么,有。
最直观的反映就是:卡,不稳定,有的刷入甚至无法开机,驱动不全导致的硬件无法使用,比如NFC,蓝牙,音频等...
当然了,随着GSI社区逐渐壮大,这些问题也,逐一被修复。下面我会以一下反应在华为身上的问题作为大家的参考。
另:2022年末(甚至是中期),phhusson宣布退休。当然,这个说法不够准确。事实上,phhusson和AndyYan等一众开发者成立了TrebleDroid Builders,以在未来更好的继续开发。当然,phhusson事实上的开发活动在减少。 在他辛勤开发这么多年,显而易见,无数被“冷漠对待”的设备因为他的无私奉献而重获新生,无数无法得到更新的安卓版本的设备也在生命末期喝到了新版本的汤。正如AndyYan说的,我们使用GSI的用户欠phhusson一个大大的感谢。 详情:XDA帖子
正如前文所提,Treble技术是在8.0放出的,这意味着EMUI 8和以上系统才可以刷GSI系统。
这意味我们可以选择以下系统:
- EMUI 8 8.0.0.372
- EMUI 9 9.0.1.179
- EMUI 9.1.0 9.1.0.201
- HarmonyOS 2
其实一般只用两个就行了,就是 EMUI 8.0.0.372和EMUI 9.0.1.179。
更高的版本几乎没有区别,可以说是意义不大。
那么如果选择EMUI 8有什么好处和坏处呢?
EMUI 8:- GSI最高版本支持到Android 11,因为EMUI 8的系统分区是A Only。(EMUI 8可以刷的GSI版本包含Android 9到Android 11。)
- 可以良好的支持Magisk(TWRP解密分区以后可以兼容到Magisk v25+)。因为包含ramdisk分区,所以root只需要修补ramdisk分区即可。
- 支持TWRP和Magisk共存。(我知道你会疑惑这也算一点?别急。下面会说。)
- 部分GSI兼容性很差,adb无法使用,诡异的图形错误,用户界面UI崩溃。(有的可以依靠hi6250社区开发TWRP补丁包解决。)
那么如果选择EMUI 9有什么好处和坏处呢?
EMUI 9:
- GSI最高版本支持到Android 13+(不确定未来能到多少),因为EMUI 9的系统分区是System as Root(SaR)。(目前EMUI 9可以刷的GSI版本包含Android 10到Android 13。)
- Magisk兼容性不佳,因为EMUI 9没有boot,ramdisk分区,只有一个32MB大小的RECOVERY_RAMDISK分区(这个分区整合了boot,Recovery分区)。Magisk会选择劫持Recovery分区,所以每次开机想要有root,就要先进入Recovery分区。然后Recovery就会直接跳转进系统。这意味着你无法进入TWRP了。
- 不支持TWRP和Magisk共存。
- 因为GSI发展的不错,越新的版本bug相对变少。
注:EMUI 9可以通过KernelSU来解决ROOT和Recovery的共存问题。详情参考KernelSU部分。
此部分来自AndyYan大佬的介绍,由本人进行简体翻译,不一定准确:
请优先向下翻,阅读版本命名规则
若对自己设备的架构有疑问,请使用Treble Info确认
命名规则 / Naming rules
{arm|a64|arm64}_{a|b}{v|g}{N|S}-{vndklite|secure|personal|slim}
| | | | |
| | | | vndklite: 针对支持VNDKLite的设备,
| | | | 或用于常规设备上的读写/系统。
| | | | secure: 超级用户被移除,欺骗了system props,
| | | | 用以获得更好的通过安全网的机会
| | | | personal: 带有个人修改,供参考
| | | | slim:镜像大小精简缩小版,用于给那些系统分区低于2GB左右的设备。
| | | |
| | | |
| | | N: 无PHH内置的超级用户(ROOT)。
| | | S: *内置构建* PHH的超级用户(ROOT) (需要下载Phh's Superuser APP) 注:本人并不推荐这个,除了用于调试开发,基本上对搞机用户帮助很低。
| | | (Z): *内置构建* 使用eremitein的动态超级用户构建(此处未提供)
| | |
| | v: Vanilla, i.e. no GAPPS 原版(标准版),不包含谷歌APPS
| | g: With regular GAPPS 包含常规的GAPPS(然而有的GSI内置的GAPPS不能通过谷歌验证,还不如TWRP刷的第三方GAPPS)
| | o: With Android Go GAPPS 包含GO版本的GAPPS
| | (f): With built-in MicroG and FLOSS replacements of GAPPS (not offered here) 包含内置的替代的MicroG和FLOSS GAPPS。(一个叫假的谷歌APP套件)(此处不提供)
| |
| a: "A-only", 系统分区是A-Only,Android 12开始已经被废弃。
| b: "AB", 系统是A/B分区,即System-as-Root,SaR分区。
|
arm: ARM 32-bit ARM 32位架构,自安卓12开始被废弃。
a64: ARM 32-bit with 64-bit binder ARM 32位架构 但是包含了64的binder机制。
arm64: ARM 64-bit ARM 64位架构。
举个例子:lineage-20.0-20230324-UNOFFICIAL-arm64_bvN.img.xz lineage-20.0-20230324-UNOFFICIAL- :这部分是系统名称,想要什么系统请在GSI List自己选。 -arm64 : ARM64架构 _bvN:b:A/B分区,也叫System As Root 分区。v:Vanilla,香草,即原版,无任何改动。N:无超级用户(Root权限)。
知道了命名规则,就可以挑选自己喜欢的GSI了,比如Lineage OS,Arrow OS等。
这里演示几个例子:
- AOSP : system-td-arm64-ab-vanilla.img.xz (AOSP,ARM64架构的,A/B分区,原版系统)
- PixelExperience Plus : PixelExperience_Plus_arm64-ab-slim-13.0-20230329-UNOFFICIAL.img.xz (PixelExperience Plus,ARM64架构的,A/B分区,缩小版)
- Arrow OS : ArrowOS-13.1-arm64_bvN-Unofficial.img.xz (Arrow OS,ARM64架构的,A/B分区)
类原生太多,不知道怎么选?选择困难症?喜欢简洁的建议从Lineage OS开始尝试。喜欢花里胡哨的建议从Evolution X。喜欢二次元有Miku UI,exTHmUI。
注:个人实际上只推荐刷安卓10和11的GSI。因为再往上就会比较卡。如果你的设备用的是闪存芯片是UFS,那就当我没说。令人悲伤的是,华为P10是eMMC和UFS混用。买到什么闪存芯片的全凭运气。
先给出项目地址: huawei-creator
本人汉化的README和修改A13脚本的版本: huawei-creator-exp
详细内容见项目的说明,这里说明一下这个项目的目的。此项目用于把普通的的GSI镜像转化为带有为华为设备优化补丁的GSI镜像。
作者是Iceows,感谢他的辛勤付出。
注意,你需要有一台搭载Linux发行版的电脑进行操作。
这里推荐Ubuntu 20.04。
无TWRP情况:
- 重启进入bootloader模式,
fastboot flash system XXXXXXXXXXXXX.img
XXXXXXXXXXXXX.img 是你选择的系统镜像。如果下载下来是.xz结尾或者其他结尾,请使用WinRAR或者7-zip进行解压处理。
- 重启进入Recovery,选择恢复出厂设置,格式化分区。
- 重启进入系统
有TWRP情况(请根据自身情况灵活应对,有的TWRP并没有解除强制加密功能,请自行寻找TWRP解除加密的zip包):
- 重启进入bootloader模式,
fastboot flash system XXXXXXXXXXXXX.img
XXXXXXXXXXXXX.img 是你选择的系统镜像。如果下载下来是.xz结尾或者其他结尾,请使用WinRAR或者7-zip进行解压处理。
- 刷入TWRP:
fastboot flash recovery_ramdisk XXXXXXXX.img
XXXXXXXX.img 是你的TWRP镜像。
- 重启进入Recovery(TWRP)
- 进入TWRP,进入 高级 ,选择 移除DATA强制加密 ,刷入后,进入 重启 ,Recovery ,之后重启进入TWRP后选择 清除 ,格式化DATA分区 ,格式化以后选择 滑动恢复默认出厂。
- 重启进入系统。
- 如果刷入GSI不开机就直接换一个其他的GSI就好了。一般来说,同一个作者的在同一时期制作的GSI通病是一致的。
- 如果有自定义内核且支持开机SELinux模式为宽容,能降低不少GSI不开机的几率,但不是完全能。有的GSI莫名其妙只能强制模式开机。
- GSI多少都有bug,指望一直稳定日用是不现实的。
- TWRP解密会降低手机安全性,但是能提升闪存性能,降低GSI的bug和不开机几率。
- 如果有能力使用huawei-creator,请使用。此项目能很好的解决大量的GSI问题。