此篇是源于自己跟團(tuán)隊(duì)小伙伴在運(yùn)行源碼demo時(shí)一些稀奇古怪問(wèn)題的坑,望眾基共勉之衰齐。由于比較雜,所以主要針對(duì)命令行跟蹤所遇到的問(wèn)題出發(fā)做筆記继阻。
mobileprovision-read -f app/embedded.mobileprovision
該命令行用于查看app對(duì)應(yīng)的provisonning文件是否和簽名對(duì)應(yīng)耻涛,其中有幾個(gè)key可供對(duì)比使用:
1、com.apple.developer.team-identifier
2瘟檩、Name
3抹缕、ProvisionedDevices
4、TeamName
5墨辛、UUID
1卓研、該命令行中有許多類(lèi)似key值的string與其相同,用于存儲(chǔ)開(kāi)發(fā)者團(tuán)隊(duì)的TeamIdentifier
2睹簇、為provisonning文件的文件名
3奏赘、當(dāng)前項(xiàng)目開(kāi)發(fā)者團(tuán)隊(duì)組中授權(quán)的設(shè)備UUID數(shù)組
4、開(kāi)發(fā)者團(tuán)隊(duì)名
5開(kāi)發(fā)者團(tuán)隊(duì)的ID
附帶貼一個(gè)鏈接(.mobileprovision文件查詢工具)
https://github.com/0xc010d/mobileprovision-read
關(guān)于provisonning文件太惠,以'iOS Team'開(kāi)頭的文件磨淌,現(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是用來(lái)同步代碼梁只,在和src同級(jí)目錄會(huì)有一個(gè)隱藏.gclient文件,里面記錄了基本的代碼拉取設(shè)置
src里面的各個(gè)目錄埃脏、甚至子目錄搪锣,基本上都是一個(gè)獨(dú)立的git庫(kù)
gclient sync的命令回去檢查整個(gè)項(xiàng)目的完整情況,并同步代碼
如果gclient sync無(wú)法通過(guò)彩掐,一般都不是代碼的問(wèn)題构舟,是因?yàn)楣ぞ哝溁蛞蕾噹?kù)和當(dāng)前代碼需要的不一致
gclient是用來(lái)同步代碼和工具鏈的
gn 是用來(lái)產(chǎn)生ninja所需的配置文件
ninja 才是編譯的
代碼里面有很多*.gni,可以認(rèn)為是和make腳本差不多的堵幽,是告訴ninja旁壮,我要編譯某個(gè)項(xiàng)目
例如AppRTCMobile,需要哪些代碼文件谐檀、以來(lái)哪些庫(kù)
git status
該命令行可查看自己的對(duì)該git的改動(dòng)
gn clean < out_dir>
刪除輸出目錄的內(nèi)容抡谐,除了args.gn和創(chuàng)建一個(gè)足以重新生成構(gòu)建的忍者構(gòu)建環(huán)境。
個(gè)人見(jiàn)解:該命令行作用應(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)沒(méi)有簽名時(shí),設(shè)置false可不簽名诗充,仍可以編譯苍蔬,但不能部署到真機(jī)。
應(yīng)該是打包出來(lái)的AppRTCMobile.app里面沒(méi)有了_CodeSignature文件夾(來(lái)自大佬的推測(cè))
xcrun security find-identity -v -p codesigning
該命令行可查詢當(dāng)前環(huán)境中可用的有效簽名蝴蜓。
ios_code_signing_identity
同是gn項(xiàng)目的設(shè)置參數(shù)碟绑,用于設(shè)置證書(shū)ID。
此處證書(shū)為iPhone Developer證書(shū)茎匠。
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ì)介紹惭蟋,此處跳過(guò)。
證書(shū)匹配的兩個(gè)點(diǎn)
1药磺、( mobileprovision-read -f AppRTCMobile.app/embedded.mobileprovision )
與 (codesign -vv -d AppRTCMobile.app )
2告组、通過(guò)命令得到簽名的UUID后,增加編譯參數(shù)( ios_code_signing_identity="UUID" )
與 ( xcrun security find-identity -v -p codesigning )