作者:领悟人生的悲欢喜乐_829 | 来源:互联网 | 2023-01-18 13:15
所以我现在转换我的项目在Xcode 9中使用Swift 4,并开始测试我的应用程序.这是一个有四个不同选项卡的大应用程序,几乎所有内容都按预期工作.其中一个标签是使用GoogleMaps的地图.我从未遇到任何麻烦,但是当使用Xcode 9构建并在模拟器中显示时,它在移动地图时使用了超过 100%的CPU,并且它非常滞后.这是在模拟器上运行时的调试导航器.我们做一些自定义绘图,但不是102%的绘图.
这只是在我更新到Xcode 9和Swift 4之后才开始发生.当在iPhone 7,8或X 模拟器上的Xcode 9中进行调试时,所有这些都使用iOS 11,它只有100%以上的CPU,它完全阻止了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等,但我找不到任何关于新版本的内容.
1> russbishop..:
更新:此问题已在Xcode 9.1 beta 2中修复
有一个错误OpenGLES.framework
导致它跳过加载LLVM JIT并回退到解释着色器.这对模拟器有严重的性能影响,因为它完全是软件渲染的OpenGL(包括CoreAnimation,SceneKit等).
编辑:为了澄清,其症状正是您所描述的:100%或更高的CPU使用率和<1fps渲染.这会影响Google Maps SDK和MapKit.
作为临时解决方法,您可以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
工作libCoreVMClient.dylib可以从这里下载(Xcode 9 Beta 3)https://www.dropbox.com/s/1bdyh86eo01x2em/libCoreVMClient.dylib?dl=0