一加七Pro刷Lineageos21(kernelsu+MicroG)

news/2025/3/12 13:30:57/文章来源:https://www.cnblogs.com/kanadeblisst/p/18236533

前言

前几天我已经刷了Lineageos21(一加七Pro刷lineageos21(kernelsu+gapps)),但是体验下来有两个很严重的bug:无法接打电话,没有声音。

收短信倒是很正常,但电话打进来只会显示号码,不会显示接听界面(对方那边显示正在通话中,也就是挂断了),拨打电话会显示已结束。

测试发现是刷了kernelsu内核导致的,如果只是刷gapps使用正常,所以想自己编译一个kernelsu试试。

MicroG

下载地址: https://github.com/FriendlyNeighborhoodShane/MinMicroG_releases/releases

正好又在酷安看到这个可以替代gapps的东西,在酷安搜索沐浴森林客这个人,他有几篇关于MicroG的安装和使用说的很详细。

相比于gapps的优点:

  • 开源
  • 省电
  • 简洁,可以只安装gapps里面某个APP

安装方式

  1. 作为magisk/kernelsu插件刷入
  2. 在recovery模式下刷入
  3. 刷入带有MicroG的系统

这里为了方便我直接选择第三种,MicroG专门为lineage创建了一个项目(LineageOS for microG),将microg直接内置在系统刷机包里。这个项目也是开源的:https://github.com/lineageos4microg/lineageos4microg.github.io,里面还提供了docker镜像用于编译。

microg需要依赖签名欺骗(Signature Spoofing),因为microg提供的组件和谷歌官方的APP签名不一样,这样就无法过谷歌的验证。

而lineage官方拒绝加入该补丁, 所以microG组织只能自己另开一个项目。 另外,其他一些支持签名欺骗的ROM:https://github.com/microg/GmsCore/wiki/Signature-Spoofing

如果不想重新刷系统,可以用一个叫FakeGApps的xposed插件达到同样的效果。使用看后面

LineageOS for microG

去官网下载刷机包刷入即可,步骤和官方的lineage是一样的,而且也提供了很多设备的刷机包。

kernelsu

编译具体可以看之前的两篇文章:

  • 为一加七Pro(LineageOs17.1 4.14内核版本)编译KernelSu
  • wsl2-ubuntu20编译Lineage17(Android10)

这里补充几个内容

下载设备树

breakfast guacamole下载设备树提示失败(只有Lineageos21才需要自己下载,之前的版本都会自动下载),原因应该是下面的提示:

那只能自己去github下载了,首先在官方仓库(https://github.com/LineageOS)里搜索guacamole可以知道一加七Pro的仓库是android_device_oneplus_guacamole

下载到指定的目录里:

git clone https://github.com/LineageOS/android_device_oneplus_guacamole -b lineage-21 device/oneplus/guacamole

根据仓库里的lineage.dependencies文件可以知道还需要另一个仓库:

git clone https://github.com/LineageOS/android_device_oneplus_sm8150-common -b lineage-21 device/oneplus/sm8150-common

[{"repository": "android_device_oneplus_sm8150-common","target_path": "device/oneplus/sm8150-common"}
]

以此类推把剩下的仓库也下载了:

git clone https://github.com/LineageOS/android_hardware_oplus -b lineage-21 hardware/oplus

git clone https://github.com/LineageOS/android_kernel_oneplus_sm8150 -b lineage-21 kernel/oneplus/sm8150

提取blob

温馨提示:有时候从刷机包里提取会有一些文件说不存在,这个时候试试从已安装的手机利用adb提取。 我在Lineage21从刷机包里提取没问题,但是Lineage20很多文件不存在,用adb提取正常

官方文档: https://wiki.lineageos.org/extracting_blobs_from_zips#extracting-proprietary-blobs-from-payload-based-otas

首先假设当前路径就是lineage源码的根路径,接着执行以下步骤:

mkdir system_dump/
cd system_dump/

安装依赖:

sudo apt-get install python3-protobuf

下载对应的工具(此时在system_dump目录):

git clone https://github.com/LineageOS/android_prebuilts_extract-tools android/prebuilts/extract-tools
git clone https://github.com/LineageOS/android_tools_extract-utils android/tools/extract-utils
git clone https://github.com/LineageOS/android_system_update_engine android/system/update_engine

然后去官网下载最新的刷机包解压:

unzip lineage-*.zip

提取payload.bin里的img文件

./android/prebuilts/extract-tools/linux-x86/bin/ota_extractor --payload ./payload.bin

挂载img文件,后面三个文件不存在,可以不执行

mkdir system/
sudo mount -o ro system.img system/
sudo mount -o ro vendor.img system/vendor/
sudo mount -o ro odm.img system/odm/
sudo mount -o ro product.img system/product/
sudo mount -o ro system_ext.img system/system_ext/

接着cd到设备的根路径,提取文件:

pwd 看一下当前绝对路径
cd ../device/oneplus/guacamole/
./extract-files.sh 上面看到的绝对路径 也就是system_dump

返回源码根路径,卸载并删除多余文件

sudo umount -R system_dump/system/
rm -rf system_dump/

从adb设备提取blob

连接adb,在device/oneplus/guacamole/下执行./extract-files.sh就会提取。

如果从刷机包提取有很多失败,就可以用这种方式,需要先在手机刷入相应的系统。

编译内核

source build/envsetup.sh

breakfast guacamole

make bootimage

然后就能看到内核文件,刷入手机依旧是老问题,无法接打电话,没有声音。翻了下issue,没有人提出这个问题,难道只有一加七Pro这个设备存在这个问题。

本来顺便编译下系统,但是不通过,也没显示错误,只看到一堆警告,就没再试了。

排查原因

因为之前使用Lineageos17+kernelsu没问题,为了进一步确认是新系统还是新版本kernelsu的问题,我又试了kernelsu之前的版本,还是一样,一刷就没声音。

那感觉是Lineageos21和kernelsu存在兼容问题,我又去测试了Lineageos20

降级Lineageos20(Android13)

直接在recovery刷的话会显示denying OTA because it's SPL downgrade,需要重新刷一遍dtbo.img、vbmeta.img和 boot.img。

如果没有这三个文件,可以看上面提取blob的方法用ota_extractor提取img。

降级到Lineageos20没出现没声音和无法接打电话的情况,那就是Lineageos21和kernelsu不兼容的问题了。不过在Lineageos20刚开始打开kernelsu管理器看没生效,当我第二天打算继续降级到Lineageos19.1的时候,打开管理器一看又生效了,也是奇怪,重启又没了。

内核使用github的和自己编译的都有这种情况,只能继续降级到Lineageos19.1了。

降级Lineageos19.1(Android12)

也是一样的问题,编译内核时下载的源码kernelsu版本换成v0.9.4(11838)就可以了,看来是0.9.5就开始加入了不支持gki设备的代码。

刷机

最后就选择了Lineageos19.1+kernelsu v0.9.4(11838),然后开始刷microg

microg

https://github.com/FriendlyNeighborhoodShane/MinMicroG_releases/releases

MinMicroG-Minimal-2.12.0-20230729205934.zipMinMicroG-MinimalIAP-2.12.0-20230729205917.zip,后者就多个了谷歌商店。

我在kernelsu作为模块刷入失败,所以在recovery刷入,输完重启打开运行adb shell npem给microg授权一些权限,因为我发现有两个权限在界面授权没响应。

ZygiskNext

https://github.com/Dr-TSNG/ZygiskNext/releases

刷这个是因为需要安装lsposed,下载zip在kernelsu管理器作为模块刷入

lsposed

https://github.com/mywalkb/LSPosed_mod

下载LSPosed-v1.9.3_mod-7244-zygisk-release.zip作为模块刷入

FakeGApps

https://github.com/whew-inc/FakeGApps/releases

下载安装,然后在lsposed启用勾选系统框架,重启就会看到microg设置的自我检查->签名伪装支持生效了,然后把其他未勾选的权限勾选上就可以,这个时候打开microg的自我检查应该全部都勾选了

safetynet-fix

https://github.com/Displax/safetynet-fix/releases/tag/v2.3.1-MOD_3.0

下载后作为模块刷入,用于通过safetynet验证。

Shamiko

https://github.com/LSPosed/LSPosed.github.io/releases

下载后作为模块刷入,这个是为了隐藏Zygisk注入痕迹的,如果没安装lsposed,就不需要用它来隐藏

Hide-My-Applist

https://github.com/Dr-TSNG/Hide-My-Applist

在lsposed里启用,用来隐藏root有关的应用的

测试

然后在microg设置里添加谷歌账号->注册设备->开启云端消息推送->开启SafetyNet, (这些过程都需要科学)

可以看到safetynet测试都通过了,但是我在谷歌商店下载的一些测试软件都显示未通过,不清楚哪里的问题,遇到了打不开的APP再说。

APP检测

Momo

没有检测到root和lsposed,这几个就不用管了,一般APP都懒得检测这些。

Ruru

全部通过检测

Hunter

这个可能存在shamiko就很牛逼了,不过只是maybe,只要不是很严的APP都是疑罪从无。下面几个就不用看了,APP如果检测lineage系统的话感觉也不合理。并不是只有逆向人员才用lineage,正常用户也会使用。

引用链接

  1. https://lineage.microg.org/#
  2. https://review.lineageos.org/c/LineageOS/android_frameworks_base/+/195284
  3. https://github.com/whew-inc/FakeGApps/releases

本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/721266.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

教务管理系统

1 项目简介 教务管理系统主要模块: 邮箱注册:用户根据邮箱发送验证码注册用户信息 邮箱登录:用户根据注册的邮箱登录 教师管理:主要包含教师的全部查询,教师信息的修改,添加教师信息,删除教师信息,分页查询教师信息 多条件查询教师信息(教师编号,名称,性别,入职日期…

网络隔离后的跨网投递需求,要这样做才能让需求落地

为了保护企业的核心数字资产、隔离有害的网络安全威胁、保障数据信息在可信网络内进行安全交互,越来越多的企业在网络建设时,选择进行网络隔离。应用较为普遍的网络隔离手段包括物理隔离、协议隔离、应用隔离等,而常见的状态是企业进行内部网络和外部互联网隔离,或者企业内…

数据库系列16:MyISAM与InnoDB的索引对比

相关文章 数据库系列:MySQL慢查询分析和性能优化 数据库系列:MySQL索引优化总结(综合版) 数据库系列:高并发下的数据字段变更 数据库系列:覆盖索引和规避回表 数据库系列:数据库高可用及无损扩容 数据库系列:使用高区分度索引列提升性能 数据库系列:前缀索引和索引长…

《UML基础、案例与应用》习题记录-第8章

部分习题,使用visio或plantuml,非正确答案,仅供参考,欢迎评论,谢绝转载。 第8章 状态图 1.状态图 2.状态图 3.状态图 欢迎大家评论交流,发现博文中存在的问题一定要留言哦

《UML基础、案例与应用》习题记录-第9章

部分习题,使用visio或plantuml,非正确答案,仅供参考,欢迎评论,谢绝转载。 第9章 顺序图 9.10.2习题 1.类图 顺序图: 2.顺序图 3.顺序图 欢迎大家评论交流,发现博文中存在的问题一定要留言哦

《UML基础、案例与应用》习题记录-第6章

部分习题,使用visio或plantuml,非正确答案,仅供参考,欢迎评论,谢绝转载。 第6章 介绍用例 6.9.2习题 2.用例图3. 用例图 4.用例图 欢迎大家评论交流,发现博文中存在的问题一定要留言哦

《UML基础、案例与应用》习题记录-第4章

部分习题,使用visio或plantuml,非正确答案,仅供参考,欢迎评论,谢绝转载。 第4章 关系 4.10.2习题 1.类图 2. 类图 3. 类图4. 类图 5. 类图 6. 类图 欢迎大家评论交流,发现博文中存在的问题一定要留言哦

《UML基础、案例与应用》习题记录-第1章

部分习题,使用visio或plantuml,非正确答案,仅供参考,欢迎评论,谢绝转载。 第1章 UML简介 1.10.2习题 4. 类图 5. 组成结构图 6. 状态图 欢迎大家评论交流,发现博文中存在的问题一定要留言哦

微软RPA工具Power Automate Desktop

什么是RPA RPA(机器人流程自动化)系统是一种应用程序,它通过模仿用户在电脑上的操作方法, 实现自动化操作流程, 协助人在计算机、手机等计算设备中完成重复的工作流任务。 Power Automate Desktop 2021年3月2日,Microsoft终于宣布面向Windows10用户,免费开放Power Automat…

代码随想录算法训练营 第三天 链表 Leetcode203 移除链表元素 Leetcode707 设计链表 Leetcode 206 反转链表

Leetcode203 移除链表元素 题目链接 注意 为了使后续节点方式统一 要人为设置链表头节点 链表的处理 一定要明白如何找前置节点 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int…

互联网大厂的缓存策略:抵抗超高并发的秘密武器,已开源!

大家好,我是冰河~~ 最近,有小伙伴私信我:冰哥,我最近出去面试,面试官问我如何设计缓存能让系统在百万级别流量下仍能平稳运行,我当时没回答上来。接着,面试官问我之前的项目是怎么使用缓存的,我说只是缓存了一些数据。当时确实想不到缓存还有哪些用处,估计这次面试是挂…