gpt4 book ai didi

android-9.0-pie - Android P 显示 API 兼容性错误消息

转载 作者:行者123 更新时间:2023-12-03 22:34:15 25 4
gpt4 key购买 nike

在 Android P 上运行基于 SDK 级别 27 构建的应用程序会有些不可预测地显示以下对话框(对话框标题是应用程序的名称):

Mysterious dialog

Detected problems with API compatibility (visit g.co/dev/appcompat for more info)



该 URL 指向 this page about restrictions on non-SDK interfaces .我的应用程序本身不使用反射,但它确实使用了 Gson。

Logcat 中没有立即明显的日志消息,除了可能的消息,例如:

Accessing hidden field Landroid/widget/AbsListView;->mIsChildViewEnabled:Z (light greylist, reflection)

最佳答案

原来我的一个 Gson 模型暴露了一个返回 File 的 getter。 Gson 使用反射递归地检查类的字段,这样做违反了不允许的 SDK 接口(interface)的反射。

阅读问题中链接的限制文档让我仔细查看了日志消息,果然,其中一个引起了我的注意:

Accessing hidden field [...] (dark greylist, reflection)



我不记得确切的消息,但这里的重点是它在暗灰名单中。

我通过以 SDK 级别 28 为目标并启用新的 StrictMode 功能 detectNonSdkApiUsage() 发现了这一点,我的应用程序会因堆栈跟踪而崩溃:
if (BuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectNonSdkApiUsage()
.penaltyLog()
.build());
}

堆栈跟踪并没有立即洞察力,但它为我指明了正确的方向。

关于android-9.0-pie - Android P 显示 API 兼容性错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51210633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com