MoreRSS

site iconCyrus Yip | 叶寻修改

自学者,对编程、学习新事物充满热情。喜欢阅读、写作、看动画、玩单机游戏。每天进行正念冥想。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Cyrus Yip | 叶寻的 RSS 预览

了解与使用 Android 的 root 权限

2024-12-23 00:00:00

root 权限 #

root 是 Android 系统的最高权限。Android 系统就像房子。没有 root 的时候用户就是租客,只有使用权,不能随便改动房子。有 root 权限的时候,用户就是房东,有所有权,可以随便改动房子(修改系统)、丢掉原有的家具(卸载系统应用)。

总之,有了 root 权限之后我们就可以完全掌控 Android 系统了。

基本流程 #

获取 root 的前提条件是解锁引导程序(bootloader),解锁了引导程序才能安装 init_boot.imgboot.img

init_boot.imgboot.img 是启动系统需要用到的文件,推荐先备份好它们。修补其中一个并安装后就能获取 root 权限。最后使用 root 管理器来管理 root 权限。

方案 #

目前有三个开源的 root 方案:

Magisk 是最经典的 root 方案,教程和资源最多。缺点是会被应用检测到,比如:中国农业银行应用检测到 root 会退出。用额外的模块才能隐藏 root。

KernelSU 是内核级 root 方案,不需要刻意隐藏 root,被授权的应用才能感知到 root。App Profile 功能可以授予应用部分权限,比如:只允许应用使用 adb 权限。

APatch 也是内核级 root 方案,KernelSU 是内核级 root 方案,不需要刻意隐藏 root,被授权的应用才能感知到 root。需要设置密码。使用方法是修补 boot.img,使用 fastboot boot boot.img 可以临时获取 root,重启后 root 消失。

如果你懒得研究隐藏 root,那就使用 KernelSU 或者 APatch。

用法 #

root 有两种使用方法。一是管理器授权给应用,二是在管理器安装 root 模块(module)。比如:授权给 Neo Backup 就可以备份应用。安装 BCR 模块之后可以自动录制通话。

root 权限可以很危险,比如用来清除手机数据或者弄坏系统。请勿授权给来源不明的应用,也不要安装来源不明的模块。尽量选择开源、知名的应用和模块。

我的用法 #

我目前使用 APatch 最新编译版1

用到 root 的应用有:

  • Brevent
  • Material Files
  • MMRL
  • Neo Backup
  • Shizuku

模块有:

  • BCR

root 的功能远不止这些,推荐你看 GitHub - fynks/awesome-android-root: A comprehensive and up-to-date list of latest Android root apps that require or utilize root privileges, rooting guides, tips, tricks and tools

相关项目 #


  1. 本来我是想在一加 Ace 3 的 PixelOS 14 用 KernelSU 的,但是修复 init_boot.img 后没用,不知道为什么。 ↩︎

推荐可以刷机的一加 Ace 3

2024-12-15 00:00:00

上个月买了可以刷机1的一加 Ace 32。一加 Ace 3 的性能不错,处理器是骁龙 8 二代(2022 年末的旗舰处理器),目前在骁龙处理器中仅次于骁龙 8 三代和骁龙 8 至尊版。喜欢刷机的读者可以考虑这台手机。

相关链接:


  1. 刷机指安装操作系统。 ↩︎

  2. 一加 Ace 3 的国际版为 OnePlus 12R。 ↩︎

小米已退烧

2024-12-08 00:00:00

小米一开始的口号是为发烧(友)而生,现在新的解锁 bootloader 政策让我感觉小米退烧了。

原本小米解锁 bootloader 的条件是等待 168 小时(7 天)。小米推出 HyperOS 后中国大陆的型号解锁 bootloader 非常难,需要小米社区 5 级,还要考试1

这个解锁政策真是让我大跌眼镜,根本是刁难用户。真搞不明白小米公司怎么想的。如果嫌用户解锁后弄坏手机要去售后,那可以在用户解锁 bootloader 后取消售后。

新解锁政策还有一个恶心的点:只针对中国大陆的设备。凭什么陆版手机解锁就那么难,国际版手机解锁就和以前一样2

新解锁政策大大影响了第三方 ROM 的开发。本小米老用户感到伤心、失望、生气。买陆版小米手机刷机的日子可能一去不复返了。


  1. Xiaomi-HyperOS-BootLoader-Bypass 可以绕过 HyperOS 的解锁限制。 ↩︎

  2. 国际版手机解锁也没那么容易了,我在 PixelOS Chat 看到有人申请解锁时提示额度已满(https://t.me/pixeloschat/466581)。 ↩︎

一加 Ace 3 刷机前的准备与安装 PixelOS 的过程

2024-12-05 00:00:00

注意事项 #

  • 本文的操作可能会过时,建议参考文末的文章。
  • 拿到手机要马上关闭自动更新,避免更新到不合适刷机的版本。
  • 解锁 bootloader 重启后马上关掉自动更新。
  • 解锁 bootloader 时会清除数据。如果确定要刷机,建议买到手机马上解锁,后面拿到 root 权限可以用 Neo Backup 备份应用数据。

名词解释 #

  • 刷机:安装操作系统
  • ROM:操作系统。ROM 本义是可读存储器(read-only memory),在刷机的语境下是(安装于 ROM 的)操作系统的意思。
  • bootloader:引导程序,需要先解锁它才能安装其他操作系统
  • root:最高权限
  • ocdt.img:每台一加手机特有的分区
  • persist.img:每台手机特有的分区

恢复系统教程 #

先看这篇恢复系统的教程:How To Guide - [12R/Ace 3] EDL DownloadTool to restore your device to OxygenOS/ColorOS | XDA Forums,最好用不上啦。

测试硬件功能 #

测试硬件功能,参考 charter/device-support-requirements.md at main · LineageOS/charter

确定硬件没问题后,如果刷机后有问题就是 ROM 有问题。

  • 扬声器、听筒
  • WIFI
  • 通话
  • USB
  • 蓝牙
  • 前置摄像头(拍照、录像)
  • 后置摄像头(0.6/1/2/5 倍数,拍照、录像)
  • 指纹
  • NFC
  • 红外线(遥控)
  • 定位
  • 陀螺仪(指南针)
  • 距离传感器(通话时会熄屏)
  • 光传感器(自动亮度)
  • 网络(只测了 5G)

记录版本信息 #

记录版本信息,可能以后有用。打开设置->关于手机->版本信息。

1
2
3
4
5
6
7
8
版本号
PJE110_14.0.0.813(CN01U140P02)
基带版本
Q_V1_P14,Q_V1_P14
内核版本
5.15.123-android-13-8-00766-gf04dea8b48fa
SOTA 版本号
U140P02(BRB1CN01)

解锁 bootloader #

在电脑安装 adb 和 fastboot,参看 Using ADB and fastboot | LineageOS Wiki

解锁时会清除数据。如果确定要刷机,建议买到手机马上解锁,后面拿到 root 权限可以用 Neo Backup 备份应用数据。

打开设置->关于手机->版本信息,快速多次点击版本号,开启开发者模式。

返回设置,打开系统与更新->开发者选项,开启 OEM 解锁和 USB 调试。

手机通过数据线插到电脑 USB 口。

1
2
3
4
adb devices # 手机按允许调试
adb reboot bootloader # 进入 fastboot 模式
fastboot devices # 应该会看到编号
fastboot flashing unlock # 解锁 bootloader,用音量键选择 UNLOCK THE BOOTLOADER,按电源键确认

现在手机重置了,开机后跳过可以跳过的设置,进入桌面。打开设置,搜索「更新」,打开「自动更新设置」,关闭自动下载和夜间自动更新。

获取 root 权限 #

Oxygen Updater 不能下载一加 Ace 3 的 ROM,所以从大侠阿木的网站下载当前版本的 ROM,也就是 PJE110_14.0.0.813

解压文件,获得 payload.bin

安装 payload-dumper-go

1
2
# Arch Linux 的安装方法
paru -S payload-dumper-go-bin

解压 payload.bin

1
payload-dumper-go payload.bin

进入解压目录,将 init_boot.img 传到手机。

1
adb push init_boot.img /sdcard/Download/

在电脑下载 Magisk,通过 adb 安装到手机。

1
adb install app-release.apk # 在手机同意安装

在手机打开 Magisk,点击「Magisk 安装->选择并修复一个文件」,选择 init_boot.img,点击「开始」。在文件管理将修补好的文件重命名为 magisk_patched.img

magisk_patched.img 复制到电脑。

1
adb pull /sdcard/Download/magisk_patched.img

获取 root 权限。

1
2
3
adb reboot bootloader
fastboot flash init_boot magisk_patched.img
fastboot reboot

备份 ocdt.img 和 persist.img #

每台一加手机的 ocdt.img 和 persist.img 都是独一无二的,所以先要备份下来。

1
2
3
4
5
6
adb shell
su # 在手机授权
dd if=/dev/block/bootdevice/by-name/ocdt of=/sdcard/Download/ocdt.img
dd if=/dev/block/bootdevice/by-name/persist of=/sdcard/Download/persist.img
exit
exit

现在 ocdt.img 和 persist.img 都在手机的 Download 文件夹,将它们复制到电脑。

1
2
adb pull /sdcard/Download/ocdt.img
adb pull /sdcard/Download/persist.img

把前面记录的版本信息保存成文本文件,和这两个 .img 文件一起备份到网盘。

安装 Pixel OS #

参考以下资料安装 Pixel OS。

我的安装过程有错误操作,为了避免误导读者,就删掉了。如果你真的想看,请点击这里

系统自带谷歌服务,用 YASNAC 测试 SafetyNet,Basic integrity 显示 pass。

再次测试硬件功能 #

参考前面的章节。既然在原装系统没事,我这次就懒得测了。

参考资料 #

OPPO / 一加 / ColorOS 的 Google Play 安装教程

2024-11-15 00:00:00

  1. 开启谷歌服务:打开设置,搜索「google」,点击「Google 设置」,开启「Google 移动服务」。
  2. 安装 Google Play:打开应用商店,搜索「google play」,升级「谷歌应用市场」。升级完后桌面会出现「Play 商店」。

测试机型:一加 OnePlus Ace 3(ColorOS 14)、OPPO Reno12(ColorOS 14)。

概念解析:物理像素、逻辑像素、CSS 像素、物理分辨率、逻辑分辨率

2024-11-02 00:00:00

物理(physical)表示实际的值,逻辑(logical)表示经过缩放的值。

物理像素 #

像素(pixel)是显示器的基本单位,一个像素显示一种颜色。为了和逻辑像素(logical pixel)区分,像素(pixel)又称物理像素(physical pixel)。

逻辑像素 / CSS 像素 #

逻辑像素(logical pixel),亦称 CSS 像素(CSS pixel),是经过操作系统缩放的像素。CSS 的 px 就是 CSS 像素。

物理分辨率 #

物理分辨率(physical resolution)表示像素的数量。1920×1080 分辨率就表示显示器水平方向有 1920 个像素,垂直方向有 1080 个像素,共 2073600 个像素。尺寸相同时,显示器分辨率越高,显示效果就越精细。

逻辑分辨率 #

逻辑分辨率(logical resolution)是经过系统缩放的分辨率。

我用 1920×1080 分辨率,27 英寸的显示器,文字看得清楚。假如我换成同尺寸 3840×2160 的显示器,此时显示器像素数是前者的 4 倍,可以容纳更多的文字,文字会变得小得看不清。在浏览器按几下 Ctrl - 调节缩放也可以看到过小的文字。

在系统设置 200% 缩放后,分辨率就变成了 (3840/2)×(2160/2),也就是 1920×1080,此时文字大小又正常了。3840×2160 是物理分辨率,1920×1080是逻辑分辨率。

相关的 Web API #

以 2560×1440 物理分辨率,200% 缩放的显示器为例,展示相关 Web API 的用法。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// 逻辑宽度
console.log(window.screen.width) // 1280
// 逻辑高度
console.log(window.screen.height) // 720
// 缩放(物理高度/逻辑高度)
console.log(window.devicePixelRatio) // 2
// 物理宽度,需要借助 devicePixelRatio 来计算
console.log(window.screen.width*window.devicePixelRatio) // 2560
// 物理高度,需要借助 devicePixelRatio 来计算
console.log(window.screen.height*window.devicePixelRatio) // 1440

在线查看分辨率 #

我写了个查看物理分辨率、逻辑分辨率和视口大小的网站,欢迎使用。

网站链接:https://resolution-viewer.cyrusyip.org/

源代码:https://github.com/CyrusYip/resolution-viewer