背景
我正在开发一个使用OSMDroid的应用程序。在运行Map功能和测试bug时,我在日志中偶然发现了这样的东西:
...
2023-02-17 15:19:06.820 28041-28422 .networkmonitor com.project123.networkmonitor E Failed to open file '/data/data/com.project123.networkmonitor/code_cache/.overlay/base.apk/assets/Mapnik/17/109600/60180.png': No such file or directory
2023-02-17 15:19:06.820 28041-28422 .networkmonitor com.project123.networkmonitor E Failed to open file '/data/data/com.project123.networkmonitor/code_cache/.overlay/base.apk/assets/Mapnik/17/109600/60180.png': No such file or directory
2023-02-17 15:19:06.823 28041-28422 .networkmonitor com.project123.networkmonitor E Failed to open file '/data/data/com.project123.networkmonitor/code_cache/.overlay/base.apk/assets/Mapnik/17/109594/60181.png': No such file or directory
2023-02-17 15:19:06.823 28041-28422 .networkmonitor com.project123.networkmonitor E Failed to open file '/data/data/com.project123.networkmonitor/code_cache/.overlay/base.apk/assets/Mapnik/17/109594/60181.png': No such file or directory
2023-02-17 15:19:06.826 28041-28422 .networkmonitor com.project123.networkmonitor E Failed to open file '/data/data/com.project123.networkmonitor/code_cache/.overlay/base.apk/assets/Mapnik/17/109595/60181.png': No such file or directory
2023-02-17 15:19:06.826 28041-28422 .networkmonitor com.project123.networkmonitor E Failed to open file '/data/data/com.project123.networkmonitor/code_cache/.overlay/base.apk/assets/Mapnik/17/109595/60181.png': No such file or directory
2023-02-17 15:19:06.828 28041-28422 .networkmonitor com.project123.networkmonitor E Failed to open file '/data/data/com.project123.networkmonitor/code_cache/.overlay/base.apk/assets/Mapnik/17/109596/60181.png': No such file or directory
2023-02-17 15:19:06.828 28041-28422 .networkmonitor com.project123.networkmonitor E Failed to open file '/data/data/com.project123.networkmonitor/code_cache/.overlay/base.apk/assets/Mapnik/17/109596/60181.png': No such file or directory
...
它会继续这样下去,直到我退出运行Map的活动。这不是应用程序破坏,但它是一种恼人的,因为我一直在试图找到一种方法来摆脱消息。
经过一些研究,我认为这可能与Map瓦片的缓存方式有关,但我不知道在哪里寻找根本原因。此外,Map瓦片的渲染是正确的。
所以我寻找与问题相关的任何东西,并得到了这部分代码:
...
val tileSource: ITileSource =
XYTileSource(
"Mapnik", 1, 18, 256, ".png",
arrayOf<String>(
// extra URLs
//"https://tiles.wmflabs.org/hikebike/"
"https://tile.openstreetmap.org/"
)
)
osmDroidMapView.setTileSource(tileSource)
...
由于这是代码中唯一提到“Mapnik”的部分,我想我应该深入到TileSource的实现中。TileSource可以告诉我错误是在哪里产生的,但(到目前为止)什么也没有出现。
问题
- 虽然Map瓦片加载正确,为什么OSMDroid会发生这样的事情?它是否试图访问并渲染它下载的缓存Map瓦片?
- 如果它被下载了,为什么该高速缓存和它的目录不存在?它应该在某个地方存在吗?我确实试图寻找它试图访问的文件,但没有找到任何东西。
1条答案
按热度按时间6xfqseft1#
当我将minSDK从26降低到24时,也发生了同样的错误。将minSDK提高到26解决了这个问题。