一加手机的Ace系列Pro机型都不在国外发售,所以自然而然也没有OxygenOS
而且我相信大部分刷机的人都会有使用Google套件的需求,虽然国内的ColorOS也有,但是ColorOS过于臃肿并且砍了很多原生的功能
相比之下,OxygenOS更简洁更纯粹,没有广告,也没有恶心的快应用
认识分区与提取全量包
使用Fastboot Enhance从相近机型的官方全量包的payload.bin
中提取出以下镜像文件,这是所有工作的基础:
镜像文件 | 是否需要处理 | 功能简介 |
---|---|---|
system | 否 | 最核心的安卓系统框架,通常用不动 |
system_ext | 是 | 系统扩展功能,补apex 文件解决开机问题就靠它 |
product | 否 | 另一个产品级功能分区,一般不动 |
my_product | 是 | 包含大量硬件特性、UI覆盖、传感器配置,一般需要修复 |
my_manifest | 是 | 包含机型初始API等级等清单属性,修改以通过启动验证 |
my_bigball | 否 | 游戏空间等相关功能 |
my_carrier | 否 | 运营商相关配置 |
my_engineering | 否 | 工程模式相关 |
my_heytap | 否 | 欢太账号服务相关 |
my_preload | 否 | 预装应用,可用欧版包精简 |
my_region | 否 | 区域特性配置 |
my_reserve | 否 | 预留分区 |
my_stock | 否 | 内置应用分区,可在此精简APP |
解包与工程准备
使用D.N.A创建一个新的工程,把上面提取的所有镜像文件都扔进这个文件夹,对system_ext
、my_product
、my_manifest
进行解包,准备工作就做好了
处理my_product
my_product搞定了就成功一大半,这里提供一种最简单粗暴的修复方法
/my_product/overlay
里面的东西全删了丢原机(修复相关状态栏例如前摄像头解锁动画)/my_product/vendor/etc
全删丢原机,修原机亮度配置/my_product/etc/fusionlight_profile/
删了丢原机覆盖原机,修自动亮度
不过想要问题少点还是要认真弄的,以下是针对ColorOS 15的详细处理指南,绝大部分来自于酷安:
修复魔方按钮/三段式
- 修改
build.prop
:build.prop将这个数值改成0propertiesro.oplus.key.actionbutton=
- 添加这段内容properties到
<oplus-featurename="oplus.software.audio.alert_slider">
/my_product/etc/permissions/oplus.product.feature_multimedia_unique.xml
里面
挖孔位置/屏幕显示异常
- 修改
build.prop
:把下面两个参数换成你原厂系统的值propertiesro.oplus.display.screen.heteromorphism= ro.oplus.display.screenhole.positon=
- 替换Overlay文件:把
/my_product/overlay/
下的oplus_framework_res_overlay.display.product
和android_framework_res_overlay.display.product
换成原厂系统的,如果原厂/odm/overlay/
里有这俩文件,直接删了移植包的也行
5.1内核蓝牙罢工
在my_product
的build.prop
里搜Bluetooth
,把所有带这个词并且值等于true
的行,要么改成false
,要么整行删掉,要么直接用原厂文件覆盖
各种软重启、HDR卡死
- 文件替换:找到以下文件,原厂系统有就换过去,没有就直接删掉
sys_graphic_enhancement_config.json
sys_game_manager_config.json
oplus.product.display_system_features.xml
- HDR开关:在
build.prop
里搜persist.sys.feature.uhdr.support=
,如果等于true
就改成false
,或者直接删了这行
自动亮度/手动亮度失灵
build.prop
搜brightness
,把整段参数换成原厂的- 把
/my_product/vendor/
整个文件夹删了,用原厂的替换这是最稳的一招
小布语音唤醒不了
把原厂系统的OVMS_1st_wakeup.bin
文件换过来,或者用同CPU型号的ColorOS包里的文件,基本就能解决
分辨率不对/显示缩放异常
- XML文件:在
oplus.product.feature_multimedia_unique.xml
里,找到所有resolution
相关的文本,删掉,换原厂的 build.prop
参数:把下面这些参数全换成原厂系统的值propertiesro.density.screenzoom.fdh= ro.density.screenzoom.qdh= ro.oplus.density.fhd_default= ro.oplus.density.qhd_default= ro.sf.lcd_density= ro.oplus.resolution.low= ro.oplus.resolution.high=
震动全无/触感反馈缺失
主要处理这两个文件:
oplus.feature.android.xml
com.oplus.oplus-feature.xml
在里面搜vibrator
,把相关段落删掉,换成原厂系统的代码这样打字震动、清理后台震动就都回来了
录像报错(过短/占用)
在oplus.product.feature_multimedia_unique.xml
里搜Record
,把相关文本段落删掉或替换
智慧感知/AON服务异常
- 把
/my_product/app/AONService
整个文件夹换成原厂的 - 把
oplus_aon_grant_permissions_list.xml
换成原厂的 - (ColorOS 15特殊处理):如果找不到上面的XML,说明代码被移到
com.oplus.oplus-feature.xml
里了在里面搜aon
,删掉相关代码,再把原厂oplus_aon_grant_permissions_list.xml
里的代码复制过来
设置里功能缺失(视频插帧/屏幕录制)
这些功能开关基本都在oplus.product.feature_multimedia_unique.xml
里,用原厂文件无脑覆盖是最省事的方法
HDR卡死或软重启 (补丁)
在my_product
的build.prop
里补上:
persist.sys.feature.uhdr.support=true
persist.sys.feature.localhdr_version=1
ro.oplus.display.brightness.apollo.default_brightness=4350
ro.oplus.display.brightness.apollo.min_light_in_dnm=1282,1282
persist.brightness.apollo=1
ro.oplus.display.brightness.apollo.global.btn=3899
屏幕色彩调节无效
去修改my_manifest.img
解包后的build.prop
! 把下面两个参数改成你手机自身的型号和品牌,比如一加12就填:
ro.product.vendor.model=PJD110
ro.product.vendor.manufacturer=OnePlus
处理my_manifest和system_ext
my_manifest/build.prop
:找到并删除ro.product.first_api_level=
这一行,或者把值改成30
这是通过启动验证的关键system_ext/apex/
:(注意!) 如果是不同CPU的移植,需要把原厂系统的这个目录补过来,相同CPU千万别补!
美化、精简与打包
- 精简:删预装去
my_stock
里删;想更纯净就用欧版的img - 打包:DNA里,选中所有修改好的文件,选项全部默认,直接打包
- 测试:强烈推荐用DSU侧载进行测试!把打包好的img文件压缩成zip,用DSU Sideloader安装测试,安全无风险,重启就回原系统
正式刷入
关闭AVB2.0验证,进入fastbootd
线刷即可
fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img
fastboot reboot fastboot
fastboot system system.img
fastboot system_ext system_ext.img
fastboot product product.img
fastboot my_product my_product.img
fastboot my_manifest my_manifest.img
fastboot my_bigball my_bigball.img
fastboot my_carrier my_carrier.img
fastboot my_engineering my_engineering.img
fastboot my_heytap my_heytap.img
fastboot my_preload my_preload.img
fastboot my_region my_region.img
fastboot my_reserve my_reserve.img
fastboot my_stockmy_stock my_stock.img
想要root还是修补手机原厂的init_boot.img
,因为我们没动init_boot.img