美文网首页WebRTC
Webrtc编译篇

Webrtc编译篇

作者: AIKOnnn | 来源:发表于2017-03-15 11:46 被阅读642次

    此篇是源于自己跟团队小伙伴在运行源码demo时一些稀奇古怪问题的坑,望众基共勉之。由于比较杂,所以主要针对命令行跟踪所遇到的问题出发做笔记。

    mobileprovision-read -f app/embedded.mobileprovision

    该命令行用于查看app对应的provisonning文件是否和签名对应,其中有几个key可供对比使用:

    1、com.apple.developer.team-identifier
    2、Name
    3、ProvisionedDevices
    4、TeamName
    5、UUID
    
    1、该命令行中有许多类似key值的string与其相同,用于存储开发者团队的TeamIdentifier
    2、为provisonning文件的文件名
    3、当前项目开发者团队组中授权的设备UUID数组
    4、开发者团队名
    5开发者团队的ID
    

    附带贴一个链接(.mobileprovision文件查询工具)
    https://github.com/0xc010d/mobileprovision-read
    关于provisonning文件,以'iOS Team'开头的文件,现在只能在xcode中进行管理,developer apple中不显示
    对比两个APP中的embedded.mobileprovision是否一样,使用

    md5 embedded.mobileprovision
    
    例:MD5 (embedded.mobileprovision) = 91a3dc5a9c4ec0edc035231ced41dbfe
    

    附上一个地址/Users/ducky/Library/MobileDevice/Provisioning Profiles

    关于webrtc的源码管理(from大佬)

    gclient是用来同步代码,在和src同级目录会有一个隐藏.gclient文件,里面记录了基本的代码拉取设置
    src里面的各个目录、甚至子目录,基本上都是一个独立的git库
     gclient sync的命令回去检查整个项目的完整情况,并同步代码
    如果gclient sync无法通过,一般都不是代码的问题,是因为工具链或依赖库和当前代码需要的不一致
    gclient是用来同步代码和工具链的
    gn 是用来产生ninja所需的配置文件
    ninja 才是编译的
    代码里面有很多*.gni,可以认为是和make脚本差不多的,是告诉ninja,我要编译某个项目
    例如AppRTCMobile,需要哪些代码文件、以来哪些库
    

    git status

    该命令行可查看自己的对该git的改动

    gn clean < out_dir>

    删除输出目录的内容,除了args.gn和创建一个足以重新生成构建的忍者构建环境。
    个人见解:该命令行作用应与xcode中clean操作功能相识,clean后out中目录相关目录会被删除,
    但不需要重新gn新的一份,可直接用ninja编译。

    gn args < out_dir> [--list] [--short] [--args]

    该命令行其实在生成项目篇有提及到,--list可查看所有参数默认值,若指定为--short则只给出当前设置的参数。
    其实根据gn的官方文档,该命令行有很强大检索功能,但这点我一直设置错误,待补充。

    ios_enable_code_signing=false

    这是gn项目时的一个设置参数,当没有签名时,设置false可不签名,仍可以编译,但不能部署到真机。
    应该是打包出来的AppRTCMobile.app里面没有了_CodeSignature文件夹(来自大佬的推测)

    xcrun security find-identity -v -p codesigning

    该命令行可查询当前环境中可用的有效签名。

    ios_code_signing_identity

    同是gn项目的设置参数,用于设置证书ID。
    此处证书为iPhone Developer证书。

    iOS Code Signing

    由于项目中自动签名一直出错,需要对其中的.APP文件进行重签名,此处用到iOS Code Signing。
    贴上一个相关学习网址http://www.cocoachina.com/ios/20141017/9949.html

    1、codesign -vv -d /Users/linzq/WebRTC/src/out/arm/AppRTCMobile.app 
        该命令行用于查询APP的签名信息
    2、$ codesign -f -s 'iPhone Developer: Thomas Kollbach (7TPNXN7G6K)' Example.app
        该命令行可对已签名的APP进行重签名,如果APP未被签名,需用其他命令。上面的网址有详细介绍,此处跳过。
    

    证书匹配的两个点

    1、( mobileprovision-read -f AppRTCMobile.app/embedded.mobileprovision )
    
    与 (codesign -vv -d AppRTCMobile.app )
    
    2、通过命令得到签名的UUID后,增加编译参数( ios_code_signing_identity="UUID" )
    
    与 ( xcrun security find-identity -v -p codesigning )  
    

    相关文章

      网友评论

        本文标题:Webrtc编译篇

        本文链接:https://www.haomeiwen.com/subject/zkrlnttx.html