Xcode 9 模拟器上的 Google 地图在移动地图时使用超过 100% 的 CPU

2023-12-31

因此,我现在已将我的项目转换为在 Xcode 9 中使用 Swift 4,并开始测试我的应用程序。这是一个大型应用程序,有四个不同的选项卡,几乎所有内容都按预期运行。其中一个选项卡是地图,使用 GoogleMaps。我从来没有遇到过任何问题,但是当使用 Xcode 9 构建并在模拟器中显示时,它使用over移动地图时CPU占用100%,而且非常卡顿。 这是在模拟器上运行时的调试导航器。 我们做了一些定制绘图,但不是 102% 的绘图。

在我更新到 Xcode 9 和 Swift 4 后,这种情况才开始发生。 在 iPhone 7、8 或 X 上的 Xcode 9 中调试时模拟器,全部使用 iOS 11,它的 CPU 利用率刚刚超过 100%,并且每次我尝试移动它时,它都会完全阻止 UI 更新大约一秒钟。我开始拖动手势,但 UI 每秒只更新一次。有效地给我关于1fps.

However,在 iPhone 6 上的 Xcode 9 中调试时模拟器 with iOS 9,当移动地图时,它会达到约 90%,并且几乎不会滞后那么多。我猜我这里的帧率大约是 20-30 fps。 (这可能与我在 Xcode 8 上的模拟器中获得的帧数相同。地图在模拟器上从来都不是很流畅..)

在实际设备(iPhone 7、iOS 11)上运行时,不断移动地图时 CPU 使用率约为 40%,并且工作非常流畅,完全没有延迟(60fps)。

当我打开带有地图的选项卡时,我也会在输出中得到这个,但我认为这与这个特定问题无关:

Main Thread Checker: UI API called on a background thread: -[UIApplication applicationState]
PID: *****, TID: *******, Thread name: com.google.Maps.LabelingBehavior, Queue name: com.apple.root.default-qos.overcommit, QoS: 21

这表示 GoogleMapsAPI 调用[UIApplication applicationState]在后台线程..

我正在使用最新版本的谷歌地图:2.4.0。据我所知,这个版本可能不支持 Xcode 9/Swift 4 等,但我找不到任何有关新版本的信息。


Update:此问题已在 Xcode 9.1 beta 2 中修复

有一个错误OpenGLES.framework这会导致它跳过加载 LLVM JIT 并回退到解释着色器。这对模拟器的性能有严重影响,因为它完全是软件渲染的 OpenGL(包括 CoreAnimation、SceneKit 等)。

edit:澄清一下,其症状正是您所描述的:100% 或更高的 CPU 使用率和

作为临时解决方法,您可以复制libCoreVMClient.dylib从 Beta 3 到 Xcode 9 GM,性能应该恢复到以前的水平。必须为每个平台运行时单独完成此操作。

对于 iOS,该位置位于:Xcode[-beta].app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/OpenGLES.framework/libCoreVMClient.dylib

对于 tvOS,该位置位于:Xcode[-beta].app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/tvOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/OpenGLES.framework/libCoreVMClient.dylib

对于 watchOS,该位置位于:Xcode[-beta].app/Contents/Developer/Platforms/WatchOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/watchOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/OpenGLES.framework/libCoreVMClient.dylib

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xcode 9 模拟器上的 Google 地图在移动地图时使用超过 100% 的 CPU 的相关文章

随机推荐