使用 Android 11 提供了大量关于访问 SQLiteDatabase 接口的输出日志
Posted
技术标签:
【中文标题】使用 Android 11 提供了大量关于访问 SQLiteDatabase 接口的输出日志【英文标题】:Using Android 11 gives a lot of output log about accessing SQLiteDatabase interface 【发布时间】:2021-03-05 00:25:36 【问题描述】:我在模拟器中使用 API 30 - android 11.0。每当我运行我的应用程序时,我都会在日志中收到超过 200 行以下消息:
Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->yieldIfContendedHelper(ZJ)Z
(greylist-max-o, linking, denied)
但是,对于我的应用程序,我什至没有使用数据库。在google上搜索,我来到this,它基本上提到了Android 11中添加到SDK中的所有非SDK接口。
那么,当我的应用甚至不使用任何数据库时,是否有可能知道为什么我会收到这么多关于该消息的日志?
【问题讨论】:
您正在使用的库可能正在使用 SQLite。您可以通过 Android Studio 的设备文件管理器查看应用的内部存储,看看您是否有任何数据库。 你是对的。看起来我的应用程序的内部存储中确实有一个数据库文件夹。有什么方法可以知道哪个库正在使用并可能阻止该库? @CommonsWare 数据库名称是什么?我们或许可以从中做出一些有根据的猜测。请记住,您可能不想要阻止库 - 很有可能您的应用被拉入库是有原因的。 我不知道数据库的名称,因为我没有使用任何数据库。但是,如果您指的是文件夹名称,则它是databases
。 @CommonsWare
哦,抱歉,我以为databases/
中有一个文件。 WebView
可能会单独存储自己的数据库,虽然我不知道它是否使用SQLiteDatabase
。
【参考方案1】:
我的基本应用程序也有类似的问题,它绝对不使用 SQLite。看起来是由 Android Studio 中的 Database Inspector 引起的。
对我有用的解决方案很简单:
-
重启 Android Studio。
除非需要,否则不要单击 Database Inspector 选项卡。
从这些问题[1][2] 看来,Database Inspector 可能会导致问题,并且没有找到在不重新启动 Android Studio 的情况下禁用它的方法。
【讨论】:
我从没碰过那个标签: 可能是错误的@ProgrammingEnthusiast 也发生在我身上...... 我确实花了几个小时试图找出我搞砸的东西。不敢相信这是问题!谢谢! 这对我也有用。只是想补充一点,这也导致在我的物理设备上启动的应用程序在初始应用程序启动时停止响应几分之一秒。 没有帮助。我在 Android Studio 北极狐 | 2020.3.1【参考方案2】:遇到同样的问题,我也从未接触过数据库检查器。我的 Android 10 手机没有收到此消息,但我的 Android 11 设备收到了。将minSdkVersion
提高到 29 似乎可以摆脱日志垃圾邮件,FWIW
【讨论】:
【参考方案3】:在我的情况下,它是由 android studio 模拟器引起的。
我尝试在我的真机上运行它,它实际上运行良好!
另外,请考虑使用更新版本的 API 制作新的模拟器。
【讨论】:
我在实体手机上也会遇到这种情况!以上是关于使用 Android 11 提供了大量关于访问 SQLiteDatabase 接口的输出日志的主要内容,如果未能解决你的问题,请参考以下文章