有些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\";"
然后提交即可。提交后清空GooglePlay的数据再打开,这时候应该可以看到“设备已通过认证”了,
某些情况下还是无法搜索到Netflix,但是直接安装Netflix的APK之后打开,应该可以正常登录观看视频了。
这个办法的副作用仍不可知,理论上可能存在某些限制,请酌情使用。