加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

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

CPU usage

这只是在我更新到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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读