wwrrjのgsi教程

wwrrjのgsi教程

七月 23, 2020

本文搬运自酷安@wwrrj忽略掉后文的版权说明(其实是我不会关)

引入概念:GSI是什么鬼?

GSI 的全称是 Generic System Image,翻译过来就是「通用系统镜像」,这个概念来源于 Project Treble。自从 Android 8 引入 Project Treble 后,手机的系统文件和底层的厂商硬件驱动开始分离存放,更新系统时只需要更新系统文件即可。此项举措意在方便厂商加快 Android 大版本更新的步伐,自然也同样方便了第三方 ROM 的开发和更新,成为了社区开发的一大福音。从理论上来说,刷入某个 GSI,你的手机就会摇身一变,从一个系统切换到了另一个系统。

更加大白话一点,理论上只要你的手机支持Project Treble,你就可以让你的手机刷入各种系统。当然,想法很美好,现实很残酷,事实上gsi并没有那么美好,局限性很多,但是的确为我们提供了很多便利,成为了一种当下流行的移植方案。

这里需要注意的是,sgsi并不在我们的讨论范围内,这是两种不同的移植方案,想看sgsi的具体可以看:迷路的小新大大的Github项目

概念大致了解了,我们怎么确定自己手机支不支持Project Treble呢?

如何检查自己的设备是否支持Project Treble?

很简单,通过Treble Check 检查

这个软件可在酷安及搜索引擎内搜索到,这里就不放链接了。
如图第一框,显示支持即您的设备可刷入GSI
目前主流的有两种三大类A only (sar),AB
我们下载到的gsi有两种A only AB,

这里需要注意,虽然SAR属于A only但是需要刷入AB的GSI
(仅仅是最基本的判断方法,误判严重)

刷入方法

刷入方法这里大概讲一下
以我的手机魅族16sPro为例

这里以TWRP为例,主页面选择刷入,接着点击刷入Image镜像
如果变成了安装zip包,你就可以选择img格式的GSI刷入啦

下面进入正题

如何获取和正确使用GSI

问:我该如何获得GSI?
答:这里有两种方法,在这篇文章里我们主要研究第二种

网上有大把的GSI镜像下载地址,你可以直接空手套GSI,直接下载

这里放一些下载地址:
https://sourceforge.net/projects/oemgsis/files/
https://github.com/phhusson/treble_experimentations/wiki/Generic-System-Image-%28GSI%29-list
https://mirrors.lolinet.com/firmware/gsi/

自己制作gsi

使用大名鼎鼎的Erfan tool
问:如何使用呢?
答:
①确保你有linux系统,推荐使用Ubuntu,本人使用的是Deepin系统,下面的演示都是在deepin上,但是不影响我们的教程。
为什么选择呢?(因为好看啊,小声bb)
②确保您有计算机基础,最好有使用linux的基础,Linux是一个命令行系统,我们大部分的操作都是在命令行中操作。
Erfan工具下载地址: https://cloud.189.cn/t/VFrIZrUNvMby
接下来是教程,因为命令较多,我会以图文的方式为大家展现一遍
首先我们需要把工具下好,建议解压到linux系统桌面上,方便使用

如图,我们解压后进入文件夹
我们先打开终端

给su权限
第一次使用该工具请输入./setup.sh

静静等待安装完成

大功告成啦
接下来我会教你们如何跑GSI
首先我们要知道这个工具支持哪些系统

9 Pie:

ColorOS Flyme Generic(类原生) MIUI Moto Nubia OneUI OxygenOS Pixel Xperia ZUI ZenUI

10 Q:

Generic(类原生)MIUI OxygenOS Pixel

11 R:

Generic(类原生) Pixel

如何使用呢?
在ErfanGSIs-master文件夹内打开终端
这里给一个公式
在终端内输入./url2GSI.sh {文件目录或直链} {系统类型}
比如我要跑一个MIUI的gsi,包的名字叫MIUI.zip
就输入./url2GSI.sh MIUI.zip MIUI
然后回车

等待跑完
跑完的GSI就保存在output文件夹

over

GSI一些常见bug的修复

(均为网络收集,如有侵权请联系我,立马删。我们不生产教程,我们只是大自然的搬运工)

(下面几条来自PdyLZY)

如何修改GSI或SGSI开机提示Android 报错?:

只需用mt管理器打开并编辑system/framework/framework-res.apk/resources.arsc。搜索开机报错内容并修改即可。适用于Android O~Android R修复flyme gsi和sgsi系统闪屏无法正常使用问题:

cpu频率占用过高:

删除以下文件即可:

system/bin/hdrfix.sh

system/etc/init/hdrfix.sh

修复gsi发热,可以删除以下文件夹:

system/priv-app/dpmservice或system/priv-app/dpmserviceapp再重启手机即可

去除部分gsi首次提示Android正在升级界面:

删除system/bin/packages.rc和system/etc/init/packages.rc即可修正

miui关于手机频率信息:

修改system/etc/device_features/xxx.xml,比如关于手机显示的频率是2.9,那就搜索290,修改即可,改成220就是2.2,230就是2.3,以此类推……

修复gsi蓝牙音频无效问题:

你可以尝试在system/build.prop和vendor/build.prop都加这些代码试试。

仅在Android 9生效,Android10无效。

1
2
3
4
5
persist.vendor.btstack.enable.splita2dp=false

persist.vendor.btstack.a2dp_offload_cap=false


修复flyme gsi信号图标偏大偏小:

删除system/product/overlay/Flyme-Notch-Height-Fix-By-Shiv.apk和flyme-systemui.apk再重启手机即可修复

zui关于手机配置信息显示:

修改system\etc\deviceinfo里面的内容即可。

修复miui状态栏手电筒:

修改system/etc/device_features里面的xml,添加这个代码并保存即可。

1
2
3
<!-- Support Android Flashlight Controller -->

<bool name="support_android_flashlight">true</bool>

修复H2OS和OOS关于手机配置信息显示问题:

手机logo图片位置:

Settings.apk/res/drawable-xxhdpi-v4/oneplus_other.png

配置信息修改:

用mt管理器2编辑Settings.apk,用Dex编辑器++全选所有dex,进入com/oneplus/settings/aboutphone 搜索noce,修改那3个noce,那3个noce分别对应处理器信息,相机信息和屏幕信息。

修复ColorOS7亮度调节问题:

用mt管理器2找到 /sys/class/leds/light-backlight,把0改成160。

解决诺基亚gsi、sgsi不显示桌面图标:

长按桌面,进入桌面设置,把单层显示改为双层显示即可

去除flyme,miui,zui,h2os的屏幕指纹通常只需要把SystemUI.apk里面的所有指纹图标ps成透明的再替换即可

如何修复屏幕闪屏和亮度调节闪屏?

修复方案:

用mt管理器2修改/system/framework/framework-res.apk,编辑resources.arsc,integer/integer:

1
2
3
4
5
config_screenBrightnessSettingDefault:100

config_screenBrightnessSettingMaximum:255

config_screenBrightnessSettingMinimum:10

如果修改后亮度过低请修改成底包或者官方包的数值!

相机和扫码都不能用该如何修复?

提取底包的system/lib和lib64:

libcamera开头的驱动全部替换即可

oneui卡主题,请检查手机屏幕是否为16:9

系统全局圆角

提取system/framework下的framework-res.apk.在mt下选择查看

然后选中resources.arsc 打开方式选择arsc编辑器一路选择Android,dimen , dimen

之后右上角选择过滤 弹出的搜索框搜索config(随意)

,目的是筛出这两个值,一个按钮,菜单的角,一个通知栏的角。config_dialogCornerRadius和config_buttonCornerRadius

在搜索结果中找到config_dialogCornerRadius和 config_buttonCornerRadius,编辑这两个值为8dp(这是pixel的官方pie默认的值 也是大部分ROM默认的值 如果你需要更大圆角可以自行加大 比如12dp)最后一路返回弹出提示选择保存,更新压缩文件选择确定。大功告成。然后用这个修改后的framework res.apk.替换掉system/framework下原来的,修改权限r-w-r-r(644),重启。

无基带,从底包替换vendor.qti.qcril

vendor.qti.atcmdfwd,到lib/lib64

屏幕指纹位置(添加进build.prop)

1
2
3
persist.vendor.sys.fp.fod.location.X_Y=*445,1260*

persist.vendor.sys.fp.fod.size.width_height=*190,190

*

其中斜线数值请改成自己机型数值,MIUI系统可使用创建快捷方式APP调出in display指纹查看位置

隐藏导航栏方法,先把导航栏改成三键模式,修改build.prop中qemu.hw.mainkeys=0项,将0改为1保存重启即可生效。

同理,加入qemu.hw.mainkeys=0代码即可加入导航栏

GSI的WiFi及热点修复

修改framework-res\res\values\arrays.xml这个文件 eth0 改wlan0 有些softap interace 为wl0.1的还需要反编译framework.jar、services.jar改回wlan0,并替换cnd、hostapd、hostapd_cli、netd、libqsap_sdk.so才能真正修复热点

gsi频繁掉卡修复

gsi通病,可以插卡有网络,能上网,能短信,但打电话秒挂,瞬间也掉信号。如果是上面问题 往下看,不是那么下一个。

第一步,删除system里面的phh和ph文件夹,再删除system/product里面的overlay文件夹!第二步,修改vendor内容, 我的直接找了同机型的overlay和radio这2个文件夹替换,记得给权限755.开机试试

MIUI护眼修复(来自nankun512)

步骤如下

1:找到你的settings.apk

2: mt管理器查看apk选择res xml display_settings.xml

用字符池常量方式打开,过滤display

3:找到paper那个 用com.android.settings.display.NightDisplaySettings替换它,然后后台杀了设置,重新打开设置,看看护眼模式是不是好了

修复哔哩哔哩弹幕闪屏的代码

#Fix Bilibili

debug.hwui.use_buffer_age=false

config.disable_rtt=true

添加上面代码进build.prop

MIUI双音量条非完美解决方案

关闭miui优化你会得到你们想要的

MIUI状态栏下拉变透明闪烁的修复方法

导致这种情况发生的主要原因是因为你的gsi中的build缺少hw相关参数

这是hwui的相关设置 这是hwui的相关参数

打开你的build对比你会发现没有上面截图的参数

你可以找一个MIUI官包的build基于它修改你的机型参数,然后直接使用就可以修复hw叠加层了。(来自Henry丶J)

flyme状态栏下拉显示问题修复(来自nankun512)

到systemui用mt查看他,找到resources.arsc,用编辑器打开它,找com.android.systemui,然后找dimen,然后找xxhdpi然后你里面有三个项目,你修改第2个跟第三个,改成跟机型一致的dpi就可以了

gsi通话无声修复方案(来自nankun512)

安装mt管理器,并授权,进入system/bin目录。一直往下翻,找到rw-system.sh打开往下找到如图这个qti这个东西,删除他

gsi通话无声修复方案(来自魅族X8也疯狂)

直接替换该文件

(下面教程均来自我家的二哈不乖)

修复自动亮度,耳机,功耗电量

把你机型的动态overlay文件我理解为叠加层(我这个机型 treble-overlay-lenovo-k5pro.apk)

放到/system/product/overlay/目录下。

[爱心] 2.修复wifi 无法连接 (并不全适用有时候又不能删除它 比如稳定版)

~删除treble-overlay-wifi5g.apk

3.修复热点

将移植固件里vendor/etc/hostapd/里的文件 复制到你的设备 目录也可以是/system/etc/hostapd/

4.黑屏卡顿

某些overlay文件的锅,排除删掉。

5.修复音频破音

~将移植固件里vendor/lib/soundfx 和 /vendor/lib64/soundfx目录下的so替换进你的设备。

6.miui功能性修复(如人脸 手电筒代码)

~miui很多功能依赖/system/etc/device_features/目录下的机型代号xml文件 无法使用的功能需要将ro.product.system.device=xxx(xxx文件名必须device_features目录下的xml文件名一致)

(miui Q需要改vendor 分区build.prop ro.product.vendor.device=xxx)

修复mtp

a only机型替换boot内init.usb.configfs.rc

修复云服务

删除/system/priv-app/FindDevice并解压该zip,将里面的FindDevice文件夹复制到/system/priv-app/

https://cloud.189.cn/t/A3mymaAV3qaa

魅族机型刷gsi的一些小经验(均为自己摸索)

魅族16s/spro/t机型刷入gsi能开机但是twrp无法读取内部储存,显示内部储存0MB

更换vendor为Flyme7.3或出场版本,然后格式化data

魅族16x刷MIUI无法开机(大佬分享)

很多种情况,这里提供两种补丁

system补全需要使用crd的vendor然后刷入该补丁

patch1本质是替换selinux,没有太多局限性

状态栏溢出(显示不完整,被大圆角遮住)

挂载vendor刷入通话和破音补丁

破音也可使用该补丁,没有局限性

蓝牙音频无法使用,在MIUI安卓9上亲测有效

这里提供一个玄学修复方法,本质也是修改驱动

刷入JamesDSP_v1.zip及Dolby Atmos模块

魅族16spro手机刷gsi无法使用mtp

这里提供一个可用mtp系统init.usb.configfs.rc

,具体可否生效看脸黑不黑

下载地址

替换这个文件到根目录的system文件夹改权限0755试试看

魅族16x刷gsi开机重启进rec,尝试取消强制加密,然后格式化data

魅族机型刷gsi开机卡fastboot,并带有avb字样,尝试进入rec关闭avb2.0校验

魅族机型刷Android 10的gsi第一屏反复规律重启

尝试替换Android Q的包里的selinux到系统内,此方法很可能能帮助你看见第二屏

魅族16x刷MIUIgsi在第二屏可能会看见Mi标和meizu标交替,静等十二次交替即可,如第十二次交替进入rec,请取消强制加密,格式化data

可以说是半成品,可在我的基础上修改发布,但需提到我

附:一些魅族测试过能开机的gsi机型

魅族16s/pro/t:可使用小米9,小米9pro的gsi

魅族16x:可尝试使用小米cc9,小米8se的gsi

(但需要进行特殊操作,也就是patch1或system补全。提一句,必须使用Flyme7.3或crdroid的vendor,否则别想开机,Flyme7.3的vendor可从我的魅族ROM链接里16x的MIUI包里解压。)

教程结束