此篇是源于自己跟團(tuán)隊(duì)小伙伴在運(yùn)行源碼demo時(shí)一些稀奇古怪問題的坑,望眾基共勉之。由于比較雜,所以主要針對(duì)命令行跟蹤所遇到的問題出發(fā)做筆記败晴。
mobileprovision-read -f app/embedded.mobileprovision
該命令行用于查看app對(duì)應(yīng)的provisonning文件是否和簽名對(duì)應(yīng),其中有幾個(gè)key可供對(duì)比使用:
key | 解釋 |
---|---|
1栽渴、com.apple.developer.team-identifier | 1尖坤、該命令行中有許多類似key值的string與其相同,用于存儲(chǔ)開發(fā)者團(tuán)隊(duì)的TeamIdentifier |
2闲擦、Name | 2慢味、為provisonning文件的文件名 |
3场梆、ProvisionedDevices | 3、當(dāng)前項(xiàng)目開發(fā)者團(tuán)隊(duì)組中授權(quán)的設(shè)備UUID數(shù)組 |
4纯路、TeamName | 4或油、開發(fā)者團(tuán)隊(duì)名 |
5、UUID | 5開發(fā)者團(tuán)隊(duì)的ID |
▲ 附帶貼一個(gè)鏈接(.mobileprovision文件查詢工具)https://github.com/0xc010d/mobileprovision-read
▲ 關(guān)于provisonning文件驰唬,以'iOS Team'開頭的文件顶岸,現(xiàn)在只能在xcode中進(jìn)行管理,developer apple中不顯示
▲ 對(duì)比兩個(gè)APP中的embedded.mobileprovision是否一樣叫编,使用
md5 embedded.mobileprovision
例:MD5 (embedded.mobileprovision) = 91a3dc5a9c4ec0edc035231ced41dbfe
▲附上一個(gè)地址/Users/ducky/Library/MobileDevice/Provisioning Profiles
關(guān)于webrtc的源碼管理(from大佬)
gclient是用來同步代碼辖佣,在和src同級(jí)目錄會(huì)有一個(gè)隱藏.gclient文件,里面記錄了基本的代碼拉取設(shè)置src里面的各個(gè)目錄搓逾、甚至子目錄卷谈,基本上都是一個(gè)獨(dú)立的git庫gclient sync的命令回去檢查整個(gè)項(xiàng)目的完整情況,并同步代碼如果gclient sync無法通過霞篡,一般都不是代碼的問題世蔗,是因?yàn)楣ぞ哝溁蛞蕾噹旌彤?dāng)前代碼需要的不一致gclient是用來同步代碼和工具鏈的gn 是用來產(chǎn)生ninja所需的配置文件ninja 才是編譯的代碼里面有很多*.gni,可以認(rèn)為是和make腳本差不多的朗兵,是告訴ninja污淋,我要編譯某個(gè)項(xiàng)目例如AppRTCMobile,需要哪些代碼文件矛市、以來哪些庫
git status
該命令行可查看自己的對(duì)該git的改動(dòng)
gn clean < out_dir>
刪除輸出目錄的內(nèi)容芙沥,除了args.gn和創(chuàng)建一個(gè)足以重新生成構(gòu)建的忍者構(gòu)建環(huán)境诲祸。個(gè)人見解:該命令行作用應(yīng)與xcode中clean操作功能相識(shí)浊吏,clean后out中目錄相關(guān)目錄會(huì)被刪除,但不需要重新gn新的一份救氯,可直接用ninja編譯找田。
gn args < out_dir> [--list] [--short] [--args]
該命令行其實(shí)在生成項(xiàng)目篇有提及到,--list可查看所有參數(shù)默認(rèn)值着憨,若指定為--short則只給出當(dāng)前設(shè)置的參數(shù)墩衙。其實(shí)根據(jù)gn的官方文檔,該命令行有很強(qiáng)大檢索功能甲抖,但這點(diǎn)我一直設(shè)置錯(cuò)誤漆改,待補(bǔ)充。
ios_enable_code_signing=false
這是gn項(xiàng)目時(shí)的一個(gè)設(shè)置參數(shù)准谚,當(dāng)沒有簽名時(shí)挫剑,設(shè)置false可不簽名,仍可以編譯柱衔,但不能部署到真機(jī)樊破。應(yīng)該是打包出來的AppRTCMobile.app里面沒有了_CodeSignature文件夾(來自大佬的推測(cè))
xcrun security find-identity -v -p codesigning
該命令行可查詢當(dāng)前環(huán)境中可用的有效簽名愉棱。
ios_code_signing_identity
同是gn項(xiàng)目的設(shè)置參數(shù),用于設(shè)置證書ID哲戚”蓟▲此處證書為iPhone Developer證書。
iOS Code Signing
由于項(xiàng)目中自動(dòng)簽名一直出錯(cuò)顺少,需要對(duì)其中的.APP文件進(jìn)行重簽名朋其,此處用到iOS Code Signing。貼上一個(gè)相關(guān)學(xué)習(xí)網(wǎng)址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 該命令行可對(duì)已簽名的APP進(jìn)行重簽名,如果APP未被簽名腕窥,需用其他命令粒没。上面的網(wǎng)址有詳細(xì)介紹,此處跳過簇爆。
證書匹配的兩個(gè)點(diǎn)
1癞松、( mobileprovision-read -f AppRTCMobile.app/embedded.mobileprovision )
與 (codesign -vv -d AppRTCMobile.app )
2、通過命令得到簽名的UUID后入蛆,增加編譯參數(shù)( ios_code_signing_identity="UUID" )
與 ( xcrun security find-identity -v -p codesigning )
特別感謝小伙伴的挖坑還有大佬的教學(xué)响蓉,再次表示感謝,如需轉(zhuǎn)載哨毁,請(qǐng)聯(lián)系博主枫甲,謝謝,相關(guān)鏈接如下:
http://www.re2x.com/WebRTC-wiki/zh-CN/#!pages/iOS/././webrtc的坑扼褪,剛剛開踩.md
https://webrtc.org/native-code/development/