我手上使用的是edge s,已解bootloader,用过很多系统,欧版官方系统,los类的第三方系统,最近回归到国行系统。其实我对国行也不怎么排斥,之前之所以不用国行,最主要是开启不了google位置记录。前几天研究了一下,发现是系统文件夹里有一个文件在作怪,具体是/system/product/etc/permissions/services.cn.google.xml,这个文件里有这么一个值,把这句删了就可以了。我用magisk root了,用了root explorer,发现system文件夹挂载不了r/w,网上搜索了下,发现原因是android 12的系统是super分区,天生不能挂载r/w。有说用twrp recovery挂载后push进去的,有说也不行的,还没试过,因为手机上现在有很多数据,怕丢了。
请大佬们帮忙,有可行的办法,把这个文件修改了。
另,修改这个文件可以实现国行rom开启location history,也是从一个magisk module上找到的,现在我也是在用这个module来实现这个功能,但我平时要玩ingress这个游戏,手机不能被root,安装了magisk后还要隐藏root,一方面麻烦,另一方面怕被ban了。毕竟我只需要开启位置记录,其他magisk的功能都不需要。
国行rom开启location history的magisk module:
采用了 super 动态分区的设备,不像你想象的那么简单。你没办法很容易的像老设备那样直接修改。我不确定我下面回复的你是否能看懂。如果你看不懂的话,那么你可能需要 Google 相关的知识或者直接放弃。
对于你的设备:
你需要将当前系统版本的 super 中,提取 product_a.img 镜像出来,在 WSL 或者其它任何类 Unix 发行版本系统上,ROOT 根用户下,随便创建一个文件夹,然后挂载 mkdir -p prod; mount product_a.img prod
。
挂载以后,dumpe2fs product_a.img
检查一下镜像特性,有没有 shared_blocks 共享块字样。如果没采用共享块,并且由于是小文件,所以不需要 resize2fs 重新分配分区大小,直接操作下一步。如果采用了共享块,则需要先将分区使用 resize2fs product_a.img 5G
命令调大(计算当前 product 镜像大小,调整到比当前镜像大 1-2GB 就可以,5G 意思就是直接把 product 调整为 5GB 大小),然后使用 e2fsck -y -E unshare_blocks product_a.img
命令将共享块移除(有共享块的时候没办法将分区挂载为读写)。
调好以后,使用 cp 命令,替换文件。
最后,umount product_a.img
解除挂载分区。然后使用 e2fsck -yf prodcut_a.img
修正因替换文件导致的文件系统错误。最后,resize2fs -M product_a.img
将 product 分区调整到最小(如果没采用共享块,在上面也没 resize2fs 调整过大小,这里也不需要调整为最小)。修改完毕。
fastboot reboot fastboot 重启进入 fastbootD 模式(注意不是 AP Fastboot 模式),将改好的 product 镜像刷入进去。fastboot flash product_a product_a.img
最后,重启进入 fastboot 模式,使用如下命令,禁用 vbmeta 验证(不禁用不开机),vbmeta 镜像从你当前系统版本的完整官方固件中提取:
fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img
对于新的出厂 Android 12+ 以上用户回复:
由于在新的 Android 12+ 以上设备,为了减小操作系统的空间占用,分区格式已经是 erofs 格式(这个格式是原菊花牌的一个员工贡献的),不是 ext4,这个格式你可以理解为一个 ZIP 压缩包(ZIP 压缩包肯定没办法改成读写吧哈哈,你往 ZIP 里添加或者删除文件实际上也是重打包过程)。你没办法在不重新打包 super 下相应的分区的情况下,将只读的文件系统改为可读写。
要重新打包 erofs 分区,原理是先将 erofs 转换为 ext4,然后再将 ext4 重新压缩回 erofs。
谢谢大佬解答,基本理解了,就是要修改系统分区镜像,然后再刷入,过几天抽空试下再来汇报结果。
你好,我遇到了一样的问题,就是希望在不root的情况下启动unlock cn gms,我目前用的是一加所以解锁很容易,但是我想到个问题就是如果我修改完services.cn.google.xml之后回锁的话那手机会格式化是不是就自动清除我的修改了,然后如果不回锁的话感觉还是会被有些软件检查出来
请你不要作死。Moto 不等于其它厂商,请不要用其它厂商的机型的经验套用到 Moto 上来。
如果系统是已修改状态,回锁 Bootloader 将验证 super / boot (包括但不限于)等分区镜像的签名,如果不通过将会显示红色英文提示你无有效的 OS 无法正常启动。回锁之后 bootloader 状态不是 oem_locked,而是 flashing_locked,在 flashing_locked 状态下无法刷入任何固件,包括官方提供的原厂固件。并且 OEM 解锁按钮自动关闭,你将没有再次重新解锁的机会。彻底变砖。
目前无第三方售后服务器可以使用,且中国区售后不会给你重新改成 oem_locked 状态的方案,只会让你付费更换主板。
如果系统是最新版本且未经修改,请始终确保 OEM 解锁处于开启状态。
大佬你好,非常感谢提醒,我之前用的一直是ios刚换到安卓所以很多事情不太清楚,
我现在首先是希望能启用nearby share(因为目前似乎没有其他使用wifi direct类似airdrop的软件),
其次我希望尽可能的对系统的影响小一点(考虑到解bl/root之后会有一些问题比如银行app会检测 我不是非常想用隐藏的方法 感觉不是非常稳定),
想问一下目前有比较优雅的解决办法吗?如果没有的话我最后的打算是刷一个类原生rom
解bl锁和root是两回事,只解bl锁对银行app没影响,不会提示
这种需求,也是非主流吧。google开启定位会增加耗电。moto原生系统本身接近pixel,但是还是有些许广告,比如搜索栏推荐,浏览器植入的广告,应用商店广告。我觉得使用类原生的系统就是为了省电流畅,另外就是使用各种xp模块。关于google套件的各种功能,除非你有在google play购买了应用或者当下有购买需求,否则使用microG加aurora store才符合使用类原生的初衷。而且,考虑到只有一些比较老的机型,才会有完善的类原生适配。所以,刷类原生只适合做副机。如果刷了类原生还有考虑各种国产银行支付类完美运行,国内毒瘤app后台推送,那么直接用国产广告原生rom算了,比如小米的原生系统就功能非常齐全,壁纸完全免费,还有小米钱包,支持模拟饭卡,还有什么一元出国流量等等。moto的系统对比一下就显得太简陋了,当然小米广告更多。我本人是苹果,安卓双机用户。我觉得集成microG的lineageos就是最好的系统,国产moto系统还是太啰嗦,不够省电。