如何解决Google Play 是否会为预发布测试激活 StrictMode?
我已向 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 相关的已知问题,我不需要对其进行任何处理)。其他四个问题与 Conscrypt 受限 API 相关,这些 API 从 Android 11(API 级别 30)开始受到限制。我的应用面向 Android 10(API 级别 29),使用这些 API 应该没问题。为什么这些报告为警告/错误?此外,为什么其中 2 个报告为警告(“不受支持”)而其中 2 个报告为错误(“完全限制”)? (Android 10 中所有 4 个都可以,Android 11 中所有 4 个都受限制)
解决方法
Re #1,Google 无需修改您的 APK 即可启用 StrictMode。我相信有可能在设备范围内启用它。
Re #2,查看 Android 10 中的 restricted APIs,我看到 Lcom/android/org/conscrypt/ConscryptEngineSocket;->setHostname(Ljava/lang/String;)
在黑名单中,这意味着它应该在运行时抛出错误。
此外,setAlpnProtocols
位于灰名单中,而不是黑名单中,因此可以解释警告和错误之间的区别。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。