解决安卓类原生ROM的Google Play “设备未通过认证”(需root/非Magisk模块)

Posted by 橙叶 on Fri, Jan 28, 2022

来源

解决与 Play 保护机制认证状态相关的问题

前言

有些ROM,比如MIUI的开发版或者一些类原生ROM,会因为Google Play的Safetynet机制,因为ROM未在Google注册的缘故,GooglePlay里会显示“设备未通过认证/Device is not certified”。如果设备未通过人证的话,有一些应用,例如Netflix,在Google Play商店里是搜索不到的,即使从APKPure等途径使用APK安装,Netflix也会提示“与你的设备不兼容”。

在Andorid 12之前,SafetyNet的问题可以通过Magisk刷入Universial SafetyNet Fix模块和MagiskHide Props Config模块来解决这个问题,但是安卓12之后这个办法似乎不太好使了。后来在Netflix官方关于这个问题的帮助里,发现Netflix/Google其实已经给了非官方ROM(也就是一些修改版、非官方发布的ROM)的解决办法。

步骤

提交页面:https://www.google.com/android/uncertified/?pli=1

办法很简单,使用adb命令查询手机的设备ID,然后提交给Google。

首先手机需要Root,我想既然能遇到这个问题,你的设备大概是已经Root或者是可以Root的。

提交页面里给出的命令理论上是可以用的,但是adb root只能在开发编译版本下使用,下载到的ROM一般是处于生产版本。

所以应该先从adb登入shell:

adb shell

然后输入su使用root用户,这时候需要在手机上给shell授予root权限。此时$变为#。 需要先检查一下sqlite3工具能不能用:

Cas:/ $ su
Cas:/ # sqlite3
SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.

如果提示inaccessible or not found,那么需要先安装sqlite3->rojenzaman / sqlite3-magisk-module

然后执行:

sqlite3 /data/data/com.google.android.gsf/databases/gservices.db \
>     "select * from main where name = \"android_id\";"

得到设备ID:

填写到网页里:

然后提交即可。提交后清空GooglePlay的数据再打开,这时候应该可以看到“设备已通过认证”了,

某些情况下还是无法搜索到Netflix,但是直接安装Netflix的APK之后打开,应该可以正常登录观看视频了。

结语

这个办法的副作用仍不可知,理论上可能存在某些限制,请酌情使用。



comments powered by Disqus