【MAC、iOS、Webrtc】由于证书问题导致webrtc编译隐形失败问题
由于最近在接手一些脏活累活,所以就被拉来解决一下ios下关于播放设备切换的问题,实际上当听到这个问题的现象是基本可以判断播放设备切换的时候没有重设播放参数引起的。
后面说为了给我个环境去调一下,iMac拿过来很开心的执行编译,谁知道编译隐形失败。。。之所以说隐形失败是gyt_webrtc和ninjia没有报错什么让人感觉在意的错。
捣腾了几天,七弄八弄的最后查到由于在执行gyp_webrtc后通过gyp生成的ninja中有几个主要工程配置没有生成。
当时由于感觉找到完整的问题了,今天过来就直接干脆手动执行后续的步骤把整个编译执行完成。起初发现有问题,因为i386的构架被打包到静态库了,然后网上找到删除掉i386方法,随之删掉i386手工合成最终的包,加入到xcode工程里面跑,结果连接失败,出现符号找不到。
继续查问题,最终还是留意到了gyp_webrtc的错误,错误如下:
iMac:build hyt$ ./ios.sh release Updating projects from gyp files... Traceback (most recent call last): File "../src/webrtc/build/gyp_webrtc", line 115, in <module> gyp_rc = gyp.main(args) File "/Users/hyt/webrtc/src/chromium/src/tools/gyp/pylib/gyp/__init__.py", line 538, in main return gyp_main(args) File "/Users/hyt/webrtc/src/chromium/src/tools/gyp/pylib/gyp/__init__.py", line 523, in gyp_main generator.GenerateOutput(flat_list, targets, data, params) File "/Users/hyt/webrtc/src/chromium/src/tools/gyp/pylib/gyp/generator/ninja.py", line 2469, in GenerateOutput pool.map(CallGenerateOutputForConfig, arglists) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py", line 251, in map return self.map_async(func, iterable, chunksize).get() File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py", line 567, in get raise self._value AssertionError: Multiple codesigning fingerprints for identity: iPhone Developer
网上查到主要是证书冲突问题。
解决步骤大致如下:
1,列出有效证书
security find-identity
2,寻找证书配置gyp文件
find . -name common.gypi | xargs grep CODE_SIGN_IDENTITY
会看到这么几行:
./chromium/src/build/common.gypi: ‘CODE_SIGN_IDENTITY[sdk=iphoneos*]’: ‘iPhone Developer’,
./chromium/src/build/common.gypi: ‘CODE_SIGN_IDENTITY[sdk=iphoneos*]’: ”,
3,用之前证书列表中Valid identities only的字段替换‘iPhone Developer’里面的内容
4,重新执行gyp_webrtc即可