iOS Simulator video recording with 'xcrun simc

2019-03-04 15:52发布

问题:

While checking Xcode 8.2 changes I found that now we can record simulator using Terminal.

So I am trying to record video from iOS simulator as describe in this Apple Document.

Taking a Screenshot or Recording a Video Using the Command Line

Command:

xcrun simctl io booted recordVideo demoVideo.mp4

Error:

2016-12-20 15:44:27.206 simctl[6434:984477] *** Assertion failure in +[SimDisplayVideoWriter videoWriter], /BuildRoot/Library/Caches/com.apple.xbs/Sources/CoreSimulator/CoreSimulator-338.16/SimulatorKit/SimDisplayVideoWriter.m:48
2016-12-20 15:44:27.207 simctl[6434:984477] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Failed to create metal device for video writer.'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fffa07f90db __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x00007fffb548ba2a objc_exception_throw + 48
    2   CoreFoundation                      0x00007fffa07fdc32 +[NSException raise:format:arguments:] + 98
    3   Foundation                          0x00007fffa2266d50 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 195
    4   SimulatorKit                        0x000000010a248c53 +[SimDisplayVideoWriter videoWriter] + 1015
    5   SimulatorKit                        0x000000010a2499e5 +[SimDisplayVideoWriter videoWriterForURL:fileType:] + 316
    6   simctl                              0x000000010a168a00 simctl + 31232
    7   simctl                              0x000000010a166bee simctl + 23534
    8   simctl                              0x000000010a170d52 simctl + 64850
    9   libdispatch.dylib                   0x00007fffb5d3fef7 _dispatch_call_block_and_release + 12
    10  libdispatch.dylib                   0x00007fffb5d370b8 _dispatch_client_callout + 8
    11  libdispatch.dylib                   0x00007fffb5d39029 _dispatch_root_queue_drain + 917
    12  libdispatch.dylib                   0x00007fffb5d38c47 _dispatch_worker_thread3 + 99
    13  libsystem_pthread.dylib             0x00007fffb5f84712 _pthread_wqthread + 1299
    14  libsystem_pthread.dylib             0x00007fffb5f841ed start_wqthread + 13
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Abort trap: 6

iOS simulator and application both working properly. This error only shown in Terminal.

I am using Xcode 8.2. Tried in Simulator of iPhone 7, 7 Plus, SE with iOS 10.2.

Am I missing any detail or need to install and component?

回答1:

Video recording is only supported on Macs that support Metal. If your system doesn't support metal, you will see an abort with that message. Yeah, we should make that error message more user friendly.

To see a list of supported systems, you can check out https://support.apple.com/en-us/HT205073



回答2:

this was also fixed in Xcode 8.3 Beta: http://adcdownload.apple.com/Developer_Tools/Xcode_8.3_beta/Release_Notes_for_Xcode_8.3_beta.pdf

• Videos recorded by the simctl tool of the xcrun command line tool now support scrubbing and import into video editors correctly. (29654098)

I did not test this currently but it is quite possible that in stable version of Xcode this bug will be fixed