此篇是源于自己跟團隊小伙伴在運行源碼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 )