Coder Social home page Coder Social logo

yuechen-c / py-ios-device Goto Github PK

View Code? Open in Web Editor NEW
651.0 651.0 181.0 618 KB

IOS Professional Performance Testing Tool . You can get CPU, GPU, Memory , Lifecycle and other metrics from real iOS devices . iOS 性能测试工具

License: GNU General Public License v3.0

Python 100.00%
instruments ios performance-testing python usbmuxd xcode

py-ios-device's People

Contributors

cai-wq avatar dependabot[bot] avatar itaybre avatar jnhyperion avatar kazucocoa avatar neverdieone avatar sanidhya-saraswat avatar tomriddly avatar vinjn avatar yuechen-c avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

py-ios-device's Issues

How to interpret memory result

Hi @YueChen-C

could you please explain the meaning of each value after following command : _$ pyidevice instruments monitor --filter 'memory'

I'm a little bit lost because when I do the test on an iphone, without any launched application and just after a reboot I've got a free memory very low, I don't understand :

Memory >> {'App Memory': '975.77 MiB', 'Free Memory': '69.72 MiB', 'Cached Files': '1.71 GiB', 'Compressed': '0.00 Bytes', 'Memory Used': '1.87 GiB', 'Wired Memory': '554.39 MiB', 'Swap Used': '0.00 Bytes'}

Thanks a lot

运行 pyidevice instruments runningProcesses --format=json 命令失败

你好,我在运行 pyidevice instruments runningProcesses --format=json 命令后,有报错信息
运行日志:
➜ airTest pyidevice instruments runningProcesses --format=json
2021-08-13 11:11:15 [INFO] [LockDown] lockdown.py[line:71] Connecting Device 00008020-000E744A11A2xxxx
2021-08-13 11:11:15 [INFO] [Instrument] Instrument.py[line:22] InstrumentServer init ...
2021-08-13 11:11:15 [INFO] [LockDown] lockdown.py[line:384] save path :/Users/guanyu/.cache/pymobiledevice/00008020-000E744A11A2xxxx.pem
2021-08-13 11:11:15 [WARNING] [Instrument] dvt.py[line:245] socket connection close
Traceback (most recent call last):
File "/usr/local/bin/pyidevice", line 8, in
sys.exit(cli())
File "/usr/local/lib/python3.9/site-packages/ios_device/main.py", line 15, in cli
cli_commands()
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1137, in call
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1062, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1668, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1668, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 763, in invoke
return __callback(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/ios_device/cli/instruments.py", line 43, in cmd_running_processes
processes = rpc.device_info.runningProcesses()
File "/usr/local/lib/python3.9/site-packages/ios_device/cli/base.py", line 34, in runningProcesses
parsed = self.rpc.call(InstrumentsService.DeviceInfo, "runningProcesses").selector
AttributeError: 'bool' object has no attribute 'call'

pyidevice instruments stackshot

请问instruments stackshot 命令是能拿到运行的堆栈信息吗?执行之后貌似卡住了,没看到输出.log文件是怎么回事

2021-07-13 17:20:03 [INFO] [LockDown] lockdown.py[line:68] Connecting Device 7978366093cb268c5521e7f07aa511e8aaf5938e
2021-07-13 17:20:03 [INFO] [Instrument] Instrument.py[line:22] InstrumentServer init ...
2021-07-13 17:20:03 [INFO] [Instrument] dvt.py[line:148] set com.apple.instruments.server.services.coreprofilesessiontap callback ...

_list.append(struct.unpack('<QLLQQQQLLQ', messages[p_record:p_record + 64]))

File "/usr/local/lib/python3.7/site-packages/ios_device/servers/DTXSever.py", line 429, in _receiver
self._channel_callbacks2 ** 32 - dtx.channel_code
File "/usr/local/lib/python3.7/site-packages/ios_device/py_ios_device.py", line 514, in _callback
for args in kperf_data(res.raw.get_selector()):
File "/usr/local/lib/python3.7/site-packages/ios_device/util/utils.py", line 115, in kperf_data
_list.append(struct.unpack('<QLLQQQQLLQ', messages[p_record:p_record + 64]))

apps launch 失败

image

apps kill 表现正常,但launch报错,手机版本14.4.2 iPhoneXs,是否是适配问题。

coreprofilesessiontap对iphone5s不兼容

按照demo中的coreprofilesessiontap在iphone5s(ios10.1)上进行测试时,会找不到830472984这个code。
另外,想请教一下,像kperf_data这段函数的解析方式以及对应的code选取是如何分析得到的呢?

获取FPS 时解析失败

File "/Users/w/work/DoctoriOS/ios_device/servers/dvt.py", line 234, in _receiver
self._channel_callbacks(2 ** 32 - dtx.channel_code)
File "/Users/w/work/DoctoriOS/ios_device/py_ios_device.py", line 499, in _callback
for args in Kperf.to_dict(res.selector.data):
File "/Users/w/work/DoctoriOS/ios_device/util/kperf_data.py", line 969, in to_dict
buf_io = self.check_header(kd_buf)
File "/Users/w/work/DoctoriOS/ios_device/util/kperf_data.py", line 964, in check_header

raise StreamError("stream read less than specified amount, expected %d, found %d" % (length, len(data)), path=path)

construct.core.StreamError: Error in path (parsing) -> threadmap -> process
stream read less than specified amount, expected 1, found 0

Lost connection to DTServiceHub

when we are running sysmontap.py

after running this we are losing the connection of the ios device

and in log getting this error

2021-08-03 08:18:01.355 xcodebuild[50493:2023541] [MT] IDETestOperationsObserverDebug: 217.413 elapsed -- Testing started completed.
2021-08-03 08:18:01.355 xcodebuild[50493:2023541] [MT] IDETestOperationsObserverDebug: 0.000 sec, +0.000 sec -- start
2021-08-03 08:18:01.355 xcodebuild[50493:2023541] [MT] IDETestOperationsObserverDebug: 217.413 sec, +217.413 sec -- end
2021-08-03 08:18:01.356 xcodebuild[50493:2023541] Error Domain=com.apple.platform.iphoneos Code=-13 "Lost connection to DTServiceHub" UserInfo={NSLocalizedDescription=Lost connection to DTServiceHub}

wanted to know is this sysmontap.py trying to restart service or what.

start_get_fps 采集时报错

2021-09-06 19:33:10 [INFO] [LockDown] lockdown.py[line:71] Connecting Device 00008020-001C05260ED8002E
2021-09-06 19:33:10 [INFO] [Instrument] Instrument.py[line:22] InstrumentServer init ...
2021-09-06 19:33:10 [INFO] [LockDown] lockdown.py[line:384] save path :/Users/huya/.cache/pymobiledevice/00008020-001C05260ED8002E.pem
2021-09-06 19:33:10 [INFO] [Instrument] dvt.py[line:162] set com.apple.instruments.server.services.coreprofilesessiontap callback ...
2021-09-06 19:33:10 [ERROR] [Instrument] dvt.py[line:247] Error in path (parsing) -> threadmap -> process
stream read less than specified amount, expected 1, found 0
Traceback (most recent call last):
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/ios_device/servers/dvt.py", line 234, in _receiver
self._channel_callbacks(2 ** 32 - dtx.channel_code)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/ios_device/py_ios_device.py", line 499, in _callback
for args in Kperf.to_dict(res.selector.data):
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/ios_device/util/kperf_data.py", line 969, in to_dict
buf_io = self.check_header(kd_buf)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/ios_device/util/kperf_data.py", line 964, in check_header
parsed_header = kd_header_v2.parse_stream(buf_io)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 300, in parse_stream
return self._parsereport(stream, context, "(parsing)")
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 312, in _parsereport
obj = self._parse(stream, context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 1981, in _parse
subobj = sc._parsereport(stream, context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 312, in _parsereport
obj = self._parse(stream, context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 2439, in _parse
return self.subcon._parsereport(stream, context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 312, in _parsereport
obj = self._parse(stream, context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 2221, in _parse
e = self.subcon._parsereport(stream, context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 312, in _parsereport
obj = self._parse(stream, context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 1981, in _parse
subobj = sc._parsereport(stream, context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 312, in _parsereport
obj = self._parse(stream, context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 2439, in _parse
return self.subcon._parsereport(stream, context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 312, in _parsereport
obj = self._parse(stream, context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 4496, in _parse
return self.subcon._parsereport(io.BytesIO(data), context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 312, in _parsereport
obj = self._parse(stream, context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 697, in _parse
obj = self.subcon._parsereport(stream, context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 312, in _parsereport
obj = self._parse(stream, context, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 4567, in _parse
b = stream_read(stream, unit, path)
File "/Users/huya/code/perfcat/venv/lib/python3.7/site-packages/construct/core.py", line 92, in stream_read
raise StreamError("stream read less than specified amount, expected %d, found %d" % (length, len(data)), path=path)
construct.core.StreamError: Error in path (parsing) -> threadmap -> process
stream read less than specified amount, expected 1, found 0

iOS11 start_get_fps callback 拿不到帧率

没有code == 830472984的情况

{'BasebandCertId': 3554301762, 'BasebandKeyHashInformation': {'AKeyStatus': 2, 'SKeyHash': b'\xec\xc4\x04S+\xf3\x1b\x88#\x8d\x97;*\xc3M\x01T\xd2\xf2\x0e', 'SKeyStatus': 0}, 'BasebandSerialNumber': b'+\x05\x01\xe8', 'BasebandVersion': '8.55.00', 'BoardId': 0, 'BuildVersion': '15F79', 'ChipID': 35168, 'DeviceClass': 'iPhone', 'DeviceColor': '#e1e4e3', 'DeviceName': '晓芬的iPhone5S', 'DieID': 510290786788, 'HardwareModel': 'N51AP', 'HasSiDP': True, 'PartitionType': 'GUID_partition_scheme', 'ProductName': 'iPhone OS', 'ProductType': 'iPhone6,1', 'ProductVersion': '11.4', 'ProductionSOC': True, 'ProtocolVersion': '2', 'TelephonyCapability': True, 'UniqueChipID': 510290786788, 'UniqueDeviceID': '23681c8c33ef1adaf0eda88f7c585491eb8d4df7', 'WiFiAddress': '84:8e:0c:23:88:4b'}

Installation failing in MacOS Bigsur

Following is the error while I am installing, Please let me know what am I missing

Building wheel for cryptography (PEP 517) ... error
ERROR: Command errored out with exit status 1:
command: /Applications/Xcode.app/Contents/Developer/usr/bin/python3 /Users/lab_macmini/Library/Python/3.8/lib/python/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /var/folders/1d/0hkjdv0s1zl4pxhj1_rdm22c0000gn/T/tmp7vk82dsn
cwd: /private/var/folders/1d/0hkjdv0s1zl4pxhj1_rdm22c0000gn/T/pip-install-zl2zlad4/cryptography_5ca1cc15e04e4036b7fbcfb709da9a23
Complete output (147 lines):
running bdist_wheel
running build
running build_py
creating build
creating build/lib.macosx-10.14.6-arm64-3.8
creating build/lib.macosx-10.14.6-arm64-3.8/cryptography
copying src/cryptography/init.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography
copying src/cryptography/utils.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography
copying src/cryptography/about.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography
copying src/cryptography/exceptions.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography
copying src/cryptography/fernet.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography
creating build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat
copying src/cryptography/hazmat/_der.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat
copying src/cryptography/hazmat/init.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat
copying src/cryptography/hazmat/_oid.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat
creating build/lib.macosx-10.14.6-arm64-3.8/cryptography/x509
copying src/cryptography/x509/oid.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/x509
copying src/cryptography/x509/ocsp.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/x509
copying src/cryptography/x509/general_name.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/x509
copying src/cryptography/x509/init.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/x509
copying src/cryptography/x509/extensions.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/x509
copying src/cryptography/x509/name.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/x509
copying src/cryptography/x509/base.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/x509
copying src/cryptography/x509/certificate_transparency.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/x509
creating build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends
copying src/cryptography/hazmat/backends/interfaces.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends
copying src/cryptography/hazmat/backends/init.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends
creating build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/cmac.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/init.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/poly1305.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/constant_time.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/keywrap.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/hmac.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/hashes.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/padding.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives
creating build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/bindings
copying src/cryptography/hazmat/bindings/init.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/bindings
creating build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/x448.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/backend.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ec.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ciphers.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ocsp.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/x509.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/aead.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/encode_asn1.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/rsa.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/dh.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/cmac.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/init.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/utils.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/poly1305.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ed25519.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/dsa.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/decode_asn1.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/hmac.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ed448.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/x25519.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/hashes.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/backends/openssl
creating build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/init.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/scrypt.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/pbkdf2.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/hkdf.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/x963kdf.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/kbkdf.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/concatkdf.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/kdf
creating build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/totp.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/init.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/hotp.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/utils.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/twofactor
creating build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/init.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/pkcs12.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/pkcs7.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/ssh.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/base.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/serialization
creating build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/algorithms.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/aead.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/init.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/modes.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/base.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/ciphers
creating build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/x448.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/ec.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/rsa.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/dh.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/init.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/utils.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/ed25519.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/dsa.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/ed448.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/x25519.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/padding.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/primitives/asymmetric
creating build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/init.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/_conditional.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/binding.py -> build/lib.macosx-10.14.6-arm64-3.8/cryptography/hazmat/bindings/openssl
running egg_info
writing src/cryptography.egg-info/PKG-INFO
writing dependency_links to src/cryptography.egg-info/dependency_links.txt
writing requirements to src/cryptography.egg-info/requires.txt
writing top-level names to src/cryptography.egg-info/top_level.txt
reading manifest file 'src/cryptography.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'docs/_build'
warning: no previously-included files found matching 'vectors'
warning: no previously-included files matching '' found under directory 'vectors'
warning: no previously-included files matching '
' found under directory '.github'
warning: no previously-included files found matching 'release.py'
warning: no previously-included files found matching '.coveragerc'
warning: no previously-included files found matching 'codecov.yml'
warning: no previously-included files found matching '.readthedocs.yml'
warning: no previously-included files found matching 'dev-requirements.txt'
warning: no previously-included files found matching 'rtd-requirements.txt'
warning: no previously-included files found matching 'tox.ini'
warning: no previously-included files matching '' found under directory '.zuul.d'
warning: no previously-included files matching '
' found under directory '.zuul.playbooks'
writing manifest file 'src/cryptography.egg-info/SOURCES.txt'
running build_ext
generating cffi module 'build/temp.macosx-10.14.6-arm64-3.8/_padding.c'
creating build/temp.macosx-10.14.6-arm64-3.8
generating cffi module 'build/temp.macosx-10.14.6-arm64-3.8/_openssl.c'
building '_openssl' extension
creating build/temp.macosx-10.14.6-arm64-3.8/build
creating build/temp.macosx-10.14.6-arm64-3.8/build/temp.macosx-10.14.6-arm64-3.8
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -iwithsysroot/System/Library/Frameworks/System.framework/PrivateHeaders -iwithsysroot/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/Headers -arch arm64 -arch x86_64 -I/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/include/python3.8 -c build/temp.macosx-10.14.6-arm64-3.8/_openssl.c -o build/temp.macosx-10.14.6-arm64-3.8/build/temp.macosx-10.14.6-arm64-3.8/_openssl.o -Wconversion -Wno-error=sign-conversion
build/temp.macosx-10.14.6-arm64-3.8/_openssl.c:575:10: fatal error: 'openssl/opensslv.h' file not found
#include <openssl/opensslv.h>
^~~~~~~~~~~~~~~~~~~~
1 error generated.

  =============================DEBUG ASSISTANCE=============================
  If you are seeing a compilation error please try the following steps to
  successfully install cryptography:
  1) Upgrade to the latest pip and try again. This will fix errors for most
     users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip
  2) Read https://cryptography.io/en/latest/installation.html for specific
     instructions for your platform.
  3) Check our frequently asked questions for more information:
     https://cryptography.io/en/latest/faq.html
  =============================DEBUG ASSISTANCE=============================

error: command 'clang' failed with exit status 1

ERROR: Failed building wheel for cryptography
Successfully built cffi
Failed to build cryptography
ERROR: Could not build wheels for cryptography which use PEP 517 and cannot be installed directly

哪里可以找到 instruments 的消息手册?

我看到各个demo里面会发送各种 instruments 消息来获取相应的数据。例如:rpc.call(channel, "startSamplingForPIDs:", {pid}).parsed
但我找不到instruments都支持哪些消息,还有这些调用这些消息时的传参和返回值的描述。请问有相关的手册吗?

stop_get_system卡住

system = start_get_system(callback=lambda a: pprint(a))
time.sleep(10)
stop_get_system(system)

程序执行到stop_get_system会一直卡住,不会结束。

iOS 14.3 and up

I am having issues running this tool with iOS 14.3
Tried extracting the DeveloperDiskImage.dmg from Xcode.app but still fails

Is iOS 14.3 supported?
Here is the output (which doesn't make much sense to me since I can call the service from libimobiledevice):

2021-03-12 09:44:18,149 - lockdown.py[line:252] - INFO: ProductVersion: 14.3
2021-03-12 09:44:18,239 - image_mounter.py[line:75] - INFO: Pushing DeveloperDiskImage.dmg
2021-03-12 09:44:18,942 - image_mounter.py[line:88] - INFO: Push complete
2021-03-12 09:44:19,026 - lockdown.py[line:308] - INFO: DeveloperImage mounted successfully
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/ios_device/util/lockdown.py", line 312, in start_service
    return self._start_service(name, escrow_bag)
  File "/usr/local/lib/python3.9/site-packages/ios_device/util/lockdown.py", line 217, in _start_service
    raise StartServiceError(f'Unable to start service={name!r} - {error}')
ios_device.util.exceptions.StartServiceError: Unable to start service='com.apple.instruments.remoteserver.DVTSecureSocketProxy' - InvalidService

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/*****/*****/py-ios-device/demo/instrument_demo/sysmontap.py", line 52, in <module>
    rpc = InstrumentServer().init()
  File "/usr/local/lib/python3.9/site-packages/ios_device/servers/Instrument.py", line 30, in init
    raise E
  File "/usr/local/lib/python3.9/site-packages/ios_device/servers/Instrument.py", line 24, in init
    self._cli = self.lockdown.start_service("com.apple.instruments.remoteserver.DVTSecureSocketProxy")
  File "/usr/local/lib/python3.9/site-packages/ios_device/util/lockdown.py", line 316, in start_service
    return self._start_service(name, escrow_bag)
  File "/usr/local/lib/python3.9/site-packages/ios_device/util/lockdown.py", line 217, in _start_service
    raise StartServiceError(f'Unable to start service={name!r} - {error}')
ios_device.util.exceptions.StartServiceError: Unable to start service='com.apple.instruments.remoteserver.DVTSecureSocketProxy' - InvalidService

访问 plist 报错Permission denied

2021-05-27 13:37:47 [INFO] [USBMux] usbmux.py[line:139] Connecting Device serial:00008030-00015C483630802E, ConnectionType:USB
Traceback (most recent call last):
File "/Library/Python/3.8/site-packages/ios_device/util/lockdown.py", line 95, in _get_pair_record
if itunes_lockdown_path.exists():
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/pathlib.py", line 1383, in exists
self.stat()
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/pathlib.py", line 1189, in stat
return self._accessor.stat(self)
PermissionError: [Errno 13] Permission denied: '/var/db/lockdown/00008030-00015C483630802E.plist'

Windows Support

I have managed to run this perfectly on MacOS, but I am having issues running it on Windows.
Every device I try to use fails when trying to connect to instruments service:

2021-04-05 00:52:09,671 - usbmux.py[line:275] - DEBUG: 发送 Plist: {'DeviceID': 11, 'PortNumber': 53958, 'ClientVersionString': 'apptim', 'MessageType': 'Connect', 'ProgName': 'tcprelay'}
2021-04-05 00:52:09,671 - usbmux.py[line:277] - DEBUG: 发送 Plist byte: b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>ClientVersionString</key>\n\t<string>apptim</string>\n\t<key>DeviceID</key>\n\t<integer>11</integer>\n\t<key>MessageType</key>\n\t<string>Connect</string>\n\t<key>PortNumber</key>\n\t<integer>53958</integer>\n\t<key>ProgName</key>\n\t<string>tcprelay</string>\n</dict>\n</plist>\n'
2021-04-05 00:52:09,671 - usbmux.py[line:282] - DEBUG: 接收 Plist byte: b'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>MessageType</key>\n\t<string>Result</string>\n\t<key>Number</key>\n\t<integer>3</integer>\n</dict>\n</plist>\n'
2021-04-05 00:52:09,671 - usbmux.py[line:286] - DEBUG: 接收 Plist: {'MessageType': 'Result', 'Number': 3}
Traceback (most recent call last):
  File "C:\Users\***\ios_device\servers\Instrument.py", line 26, in init
    self._cli = self.lockdown.start_service("com.apple.instruments.remoteserver")
  File "C:\Users\***\ios_device\util\lockdown.py", line 312, in start_service
    return self._start_service(name, escrow_bag)
  File "C:\Users\***\ios_device\util\lockdown.py", line 219, in _start_service
    plist_service = PlistService(
  File "C:\Users\***\ios_device\util\plist_service.py", line 34, in __init__
    self.sock = self.device.connect(port)  # type: socket
  File "C:\Users\***\ios_device\util\usbmux.py", line 37, in connect
    return connector.connect(self, port)
  File "C:\Users\***\ios_device\util\usbmux.py", line 114, in connect
    raise MuxError('Connect failed: error %d' % ret)
ios_device.util.exceptions.MuxError: Connect failed: error 3

The code I run to get this is:

device = PyiOSDevice(UDID)
print(device.get_capabilities())
device.stop()

The environment is Windows 10, with iTunes installed and libimobiledevice running fine.
Any idea what I am doing wrong? (I had to increase timeouts to be able to find the device)

您好咨询个问题,关于获取应用内存

您好 我想在获取start_get_graphics_fps中fps的同时传一个包名获取这个应用的内存占用,看了下demo中好像没有查看内存相关的,源码又捋不太清楚,能帮忙提供下思路么谢谢

Attribute details

Hi

Can you please

describe these attribute or reference document if any

procAttrs': ['memVirtualSize', 'cpuUsage', 'procStatus', 'appSleep', 'uid', 'vmPageIns', 'memRShrd',
'ctxSwitch', 'memCompressed', 'intWakeups', 'cpuTotalSystem', 'responsiblePID', 'physFootprint',
'cpuTotalUser', 'sysCallsUnix', 'memResidentSize', 'sysCallsMach', 'memPurgeable',
'diskBytesRead', 'machPortCount', '__suddenTerm', '__arch', 'memRPrvt', 'msgSent', 'ppid',
'threadCount', 'memAnon', 'diskBytesWritten', 'pgid', 'faults', 'msgRecv', '__restricted', 'pid',
'__sandbox'], # 输出所有进程信息字段,字段顺序与自定义相同(全量自字段,按需使用)
'sysAttrs': ['diskWriteOps', 'diskBytesRead', 'diskBytesWritten', 'threadCount', 'vmCompressorPageCount',
'vmExtPageCount', 'vmFreeCount', 'vmIntPageCount', 'vmPurgeableCount', 'netPacketsIn',
'vmWireCount', 'netBytesIn', 'netPacketsOut', 'diskReadOps', 'vmUsedCount', '__vmSwapUsage',
'netBytesOut'],

Unable to start service='com.apple.instruments.remoteserver.DVTSecureSocketProxy' - InvalidService

Hello @YueChen-C ,

When I launch the command "pyidevice instruments monitor", I get the following error, could you please give some help?
My environment : Windows 10 / iPhone 12 / iOS 15.0.2

2021-11-24 15:44:33 [INFO] [LockDown] lockdown.py[line:71] Connecting Device 00008101-XXXXX
2021-11-24 15:44:33 [INFO] [Instrument] Instrument.py[line:22] InstrumentServer init ...
2021-11-24 15:44:33 [INFO] [LockDown] lockdown.py[line:377] save path :C:\Users\xxxx.cache\pymobiledevice\00008101-XXXXX.pem
2021-11-24 15:44:33 [INFO] [LockDown] lockdown.py[line:71] Connecting Device 00008101-XXXXX
_2021-11-24 15:44:33 [INFO] [LockDown] lockdown.py[line:294] ProductVersion: 15.0.2
Traceback (most recent call last):
File "C:\Python39\lib\site-packages\ios_device\util\lockdown.py", line 342, in start_service
return self._start_service(name, escrow_bag)
File "C:\Python39\lib\site-packages\ios_device\util\lockdown.py", line 258, in start_service
raise StartServiceError(f'Unable to start service={name!r} - {error}')
ios_device.util.exceptions.StartServiceError: Unable to start service='com.apple.instruments.remoteserver.DVTSecureSocketProxy' - InvalidService

Not able to run get data when run sysmontap.py.

When i run sysmontap.py with command sudo python3 sysmontap.py i am getting below error.

2021-04-16 00:27:24,464 - lockdown.py[line:94] - WARNING: [Errno 1] Operation not permitted: '/var/db/lockdown/cd872c4dcfb573af88d218267581aa05b580d046.plist'
not supported: {'$version': 100000, '$archiver': 'NSKeyedArchiver', '$top': {'root': uid(1)}, '$objects': ['$null', '_channelCanceled:']}
Traceback (most recent call last):
File "/Users/Rahul/Downloads/py-ios-device-main/demo/instrument_demo/sysmontap.py", line 53, in
addresses, port, psk = rpc.start_wireless()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/ios_device/servers/Instrument.py", line 60, in start_wireless
print("remove", self.call(channel, "removeDaemonFromService").parsed)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/ios_device/servers/DTXSever.py", line 352, in call
ret = self._call(True, channel_id, selector, *auxiliaries)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/ios_device/servers/DTXSever.py", line 368, in _call
raise RuntimeWarning("rpc service died")
RuntimeWarning: rpc service died

Screenshot 2021-04-16 at 12 35 23 AM

Please check @YueChen-C.

getting error while running launchapp

sudo python3 launchapp.py d2ff3799d220fdsfds1f98ec3bdcb1a5b6e2e08 net.openvpn.connect.app
Number of arguments: 3 arguments.
d2ff3799d220fdsfds1f98ec3bdcb1a5b6e2e08
Argument List: ['launchapp.py', 'd2ff3799d220fdsfds1f98ec3bdcb1a5b6e2e08', 'net.openvpn.connect.app']
Traceback (most recent call last):
File "/Users/radmin/py-ios-devicev1/demo/instrument_demo/launchapp.py", line 5, in
from ios_device.servers.Instrument import InstrumentServer
File "/Users/radmin/py-ios-devicev1/ios_device/servers/Instrument.py", line 7, in
from ..util.lockdown import LockdownClient
File "/Users/radmin/py-ios-devicev1/ios_device/util/lockdown.py", line 24, in
from .utils import DictAttrProperty, cached_property
File "/Users/radmin/py-ios-devicev1/ios_device/util/utils.py", line 4, in
from ios_device.util.service_info import MyServiceInfo
File "/Users/radmin/py-ios-devicev1/ios_device/util/service_info.py", line 8, in
from zeroconf import ServiceInfo, _TYPE_A, _TYPE_AAAA, DNSAddress, _TYPE_SRV, DNSService, _CLASS_IN,
ImportError: cannot import name '_TYPE_A' from 'zeroconf' (/usr/local/lib/python3.9/site-packages/zeroconf/init.py)
Mac-book:instrument_demo radmin$

getting this while running launchapp.py

I am trying to run from the source

modified in such a way that can read udid and app id from cmd line

if name == 'main':
rpc = rpc = InstrumentServer(udid=sys.argv[1]).init()
_launch_app(rpc, sys.argv[2])
rpc.stop()

在获取网络数据过程中报 ssl.SSLZeroReturnError: TLS/SSL connection has been closed (EOF) (_ssl.c:1091)

[2021-09-11 15:46:14,376] ERROR:IOSPerf.py at line 272: TLS/SSL connection has been closed (EOF) (_ssl.c:1091)
Traceback (most recent call last):
File "G:\code\perfcat\common\IOSPerf.py", line 251, in get_network_rx_tx
data1 = py_ios_device.get_netstat(pid=self.pid, device_id=self.device_id)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\ios_device\py_ios_device.py", line 659, in get_netstat
_rpc_channel = init(device_id)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\ios_device\py_ios_device.py", line 204, in init
rpc_channel.init()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\ios_device\servers\Instrument.py", line 26, in init
self._cli = self.lockdown.start_service("com.apple.instruments.remoteserver.DVTSecureSocketProxy")
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\ios_device\util\lockdown.py", line 349, in start_service
return self._start_service(name, escrow_bag)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\ios_device\util\lockdown.py", line 262, in _start_service
network=self.network)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\ios_device\util\plist_service.py", line 37, in init
self.ssl_start(ssl_file, ssl_file)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\ios_device\util\plist_service.py", line 40, in ssl_start
self.sock = ssl.wrap_socket(self.sock, keyfile, certfile)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 1238, in wrap_socket
suppress_ragged_eofs=suppress_ragged_eofs
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 423, in wrap_socket
session=session
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 870, in _create
self.do_handshake()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 1139, in do_handshake
self._sslobj.do_handshake()
ssl.SSLZeroReturnError: TLS/SSL connection has been closed (EOF) (_ssl.c:1091)

Question: App in compiled using DEBUG mode

Hello there! We are writing a routine to get Startup Time calculation using TimeProfiler over instruments.
It will be nice to create a PR to this repo to add those capabilities.

Is there any way to check in advance if a certain APP is in debug mode ?
This will be the pre-requisite to make this routine work properly.

Thanks !

Question regarding network conditions profiles

Hello,

I wonder if it's possible to customize or create new network condition profiles, or if we are limited to the existed ones only (for example SlowNetworkLTE) ?

Thank you very much

如何发现入参的

请教一下,我用ida反汇编库文件发现com.apple.instruments.server.services.sysmontap服务对应的DTTapService类里面的setConfig:方法并没有太多的源码可供参考,请问是如何发现setConfig:方法的入参的

ValueError: math domain error

你好,我在使用py-ios-device执行pyidevice instruments monitor命令时,出现如下的错误提示:

2021-10-09 11:08:04 [ERROR] [Instrument] dvt.py[line:247] math domain error
Traceback (most recent call last):
  File "c:\python36\lib\site-packages\ios_device\servers\dvt.py", line 234, in _receiver
    self._channel_callbacks[(2 ** 32 - dtx.channel_code)](dtx)
  File "c:\python36\lib\site-packages\ios_device\cli\instruments.py", line 257, in on_callback_message
    print("Memory  >>", Memory.decode(data))
  File "c:\python36\lib\site-packages\ios_device\util\utils.py", line 211, in decode
    Swap_Used = convertBytes(system.get("__vmSwapUsage"))
  File "c:\python36\lib\site-packages\ios_device\util\utils.py", line 122, in convertBytes
    math.log(_bytes, 1024)  # 求对数(对数:若 a**b = N 则 b 叫做以 a 为底 N 的对数)
ValueError: math domain error

设备是iPhone 12 Pro, 系统版本iOS 14.7.1
不太清楚为何会出现这种问题,还麻烦帮忙看看,谢谢。

Expose arguments and env to `launch_app`

Hey folks, looks like the rpc call for launching an app hard-codes the args and env parameters. Can these be exposed? Happy to put up a PR. Code in question:

    pid = _rpc_channel.call(channel_name,
                            "launchSuspendedProcessWithDevicePath:bundleIdentifier:environment:arguments:options:", "",
                            bundle_id, {}, [], {"StartSuspendedKey": 0, "KillExisting": 1}).selector

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.