从 Android 9(API 级别 28)开始,Android 平台对应用能使用的非 SDK 接口实施了限制。只要应用引用非 SDK
接口或尝试使用反射或 JNI
来获取其句柄,这些限制就适用。这些限制旨在帮助提升用户体验和开发者体验,为用户降低应用发生崩溃的风险,同时为开发者降低紧急发布的风险。如需详细了解有关此限制的决定,请参阅通过减少非 SDK 接口的使用来提高稳定性。
而在某些时候,某些操作会使得这一限制失效,如 Fake Location 等使用特殊接口的 app,这可能会导致一些问题,最直接的可能莫过于在 momo 中看到一条“非 SDK 接口的限制失效”的提示消息
而解决这一问题的方法也非常简单,根据Android 官方文档的描述,如需将 API 强制执行策略重置为默认设置,仅需使用如下命令
Android10 及以上
adb shell settings delete global hidden_api_policy
Android9
adb shell settings delete global hidden_api_policy_pre_p_apps
adb shell settings delete global hidden_api_policy_p_apps
以上命令在去掉开头的adb shell
后也可以在手机上以 adb(如通过 Shizuku)或 root 权限运行。