您当前位置: 首页 » 移动开发 »

iOS

分类目录归档: iOS

【webrtc、ios sdk 11、 xcode9】webrtc在xcode 9下的uuid_t编译错误

最近osx环境无意间升级了所有的包,并把xcode升级到了9。按部就班的继续编译之前可以正常编译的webrtc,后来不料,除了这么一个错误:

error: nullability specifier ‘_Nullable’ cannot be applied to non-pointer type ‘uuid_t’ (aka ‘unsigned char [16]’)

 

东查西查。最后就查到了之前的猜测,这里有解释:

https://forums.xamarin.com/discussion/103773/will-there-be-support-for-ios-11-sdk

因为xcode自带的是ios sdk 11的。就目前来说,这一点比较坑人,因为ios sdk 11的库和ios sdk 10的库在部分函数上的定义上有所区别。

而webrtc和相应的depot_tools也是今年年初的,因此使用的第三方clang编译器也相对xcode 9的步调来说老了一些。

为了不想增加麻烦,也就不打算用gclient了,因为当时不是我去拿的webrtc代码,也不知道会不会有坑。就果断把xcode降级为xcode 8。

xcode 8的下载地址:

https://developer.apple.com/download/more/

降级的方法:

http://osxdaily.com/2012/02/20/uninstall-xcode/

 

看来用第三方编译器也是让人比较头疼的一件事情。有时候ios上遇到的坑不比android少。。。

 

2017-11-01 | | [奇葩类]求上进系列, iOS, 移动开发, 编码技巧, 音视频_图像相关

【webrtc、ios sdk 11、 xcode9】webrtc在xcode 9下的uuid_t编译错误已关闭评论

【osx、ios、xcode】编译x264、ffmpeg时出现sysroot警告

在编译x264和ffmpeg时会出现警告,截图如下:

实际上在命令行中已经看到,已经通过sysroot设置过目标平台的sdk的位置,但还是报错。通过google发现,新版本的xcode对sysroot参数关键字做了修改,将–sysroot改为-isysroot ,其他不变,编译通过。

2017-10-31 | | [奇葩类]求上进系列, iOS, 移动开发, 编码技巧

【osx、ios、xcode】编译x264、ffmpeg时出现sysroot警告已关闭评论

【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即可

2017-03-01 | | [linux总结], chromium, iOS, 移动开发, 音视频_图像相关

【MAC、iOS、Webrtc】由于证书问题导致webrtc编译隐形失败问题已关闭评论