ios – Xcode 9中的模拟器上的GoogleMaps在移动地图时使用了超过100%的CPU

ios – Xcode 9中的模拟器上的GoogleMaps在移动地图时使用了超过100%的CPU,第1张

概述所以我现在将我的项目转换为在Xcode 9中使用Swift 4,并开始测试我的应用程序。这是一个有四个不同标签的大应用程序,几乎所有内容都按预期工作。其中一个标签是使用GoogleMaps的地图。我从来没有遇到任何麻烦,但是当使用Xcode 9构建并在模拟器中显示时,它在移动地图时使用了超过100%的CPU,并且它非常滞后。 这是在模拟器上运行时的调试导航器。 我们做一些自定义绘图,但不是102% 所以我现在将我的项目转换为在Xcode 9中使用Swift 4,并开始测试我的应用程序。这是一个有四个不同标签的大应用程序,几乎所有内容都按预期工作。其中一个标签是使用GoogleMaps的地图。我从来没有遇到任何麻烦,但是当使用Xcode 9构建并在模拟器中显示时,它在移动地图时使用了超过100%的cpu,并且它非常滞后。
这是在模拟器上运行时的调试导航器。
我们做一些自定义绘图,但不是102%的绘图。

这只是在我更新到Xcode 9和Swift 4后才开始发生的。
当在iPhone 7,8或X模拟器上的Xcode 9中进行调试时,所有这些都使用iOS 11,它只占cpu的100%以上,每当我尝试移动它时,它会完全阻止UI更新大约一秒钟。我开始拖动手势,但UI只会每秒更新一次。有效地给我约1fps。

但是,在使用iOS 9的iPhone 6模拟器上的Xcode 9中进行调试时,移动地图时可达到约90%而不会滞后。我猜我在这里得到大约20-30 fps。 (这可能与我在Xcode 8上的模拟器中获得的fps相同。在模拟器上,地图从未如此流畅……)

当在实际设备(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]。

我使用的是最新版本的GoogleMaps:2.4.0。据我所知,这个版本可能不支持Xcode 9 / Swift 4等,但我找不到任何关于新版本的内容。

解决方法 更新:此问题已在Xcode 9.1 beta 2中修复

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

编辑:为了澄清,其症状正是您所描述的:100%或更高的cpu使用率和<1fps渲染。这会影响Google Maps SDK和MapKit。 作为临时解决方法,您可以将来自Beta 3的libCoreVMClIEnt.dylib复制到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

总结

以上是内存溢出为你收集整理的ios – Xcode 9中的模拟器上的GoogleMaps在移动地图时使用了超过100%的CPU全部内容,希望文章能够帮你解决ios – Xcode 9中的模拟器上的GoogleMaps在移动地图时使用了超过100%的CPU所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1069802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存