我已经向 Google Play 提交了一个应用,并且 Play 管理中心的预发布测试显示了一些违反 API 政策的行为(使用受限/不受支持的 API):
当我检查这些事件的堆栈跟踪时,我看到 StrictMode 检测到 API 策略违规。这是一个例子:
StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Lcom/android/org/conscrypt/ConscryptEngineSocket;->setHostname(Ljava/lang/String;)V
at android.os.StrictMode.lambda$static$1(StrictMode.java:416)
at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
at java.lang.Class.getDeclaredMethodInternal(Native Method)
at java.lang.Class.getPublicMethodRecursive(Class.java:2079)
at java.lang.Class.getMethod(Class.java:2066)
at java.lang.Class.getMethod(Class.java:1693)
at e.g0.k.e.b(Unknown Source:1)
at e.g0.k.e.a(Unknown Source:7)
at e.g0.k.e.d(Unknown Source:4)
at e.g0.k.e.e(Unknown Source:0)
[...]
这让我感到困惑有几个原因:
我没有在我的应用程序中启用 StrictMode。Google 是否正在修改提交的 APK 以启用 StrictMode 进行预启动测试?我在任何地方都找不到这方面的任何信息。
我忽略了与 View 和 ViewGroup 相关的两个警告(根据报告,这些是与 AndroidX 相关的已知问题,我不需要对它们做任何事情)。其他四个问题与从 Android 11(API 级别 30)开始受到限制的 Conscrypt 受限 API 有关。我的应用面向 Android 10(API 级别 29),这些 API 的使用应该没问题。为什么这些报告为警告/错误?此外,为什么其中 2 个报告为警告(“不支持”)而其中 2 个报告为错误(“完全受限”)?(在 Android 10 中所有 4 个都可以,在 Android 11 中所有 4 个都受到限制)