背景:最近在做的項目是flutter的工程棚辽,代碼部分既有OC的原生代碼,也有dart的代碼冰肴,當然屈藐,大多數(shù)時間都是在寫dart的代碼,寫dart的代碼需要用VS code或Android Studio(下面簡稱AS)熙尉,我是習慣使用AS 的估盘,但是在run項目的時候,還得要打開Xcode骡尽,雖然不在 Xcode上寫代碼遣妥,但還是要把Xcode打開,把項目跑起來攀细,既然Xcode的作用這么卑微箫踩,那么有沒有辦法不打開Xcode也能把項目跑起來呀?
首先聲明一下谭贪,以下都是在模擬器下操作 境钟,并非真機,因為iOS的模擬器基本就可以滿足日常開發(fā)需求
1俭识、去Xcode化第一步 - 編譯
第一步慨削,當然是解決編譯問題,這個比較簡單套媚,因為我們可以通過腳本來替代Xcode的編譯
核心腳本
cd project/dir #進入你的項目目錄下
#打開模擬器
open -a Simulator
#終止運行
xcrun simctl terminate booted com.tencent.qq #后面的是項目bundle id
#依賴更新缚态,如果有需要的話
pod install
#編譯,如無需編譯直接運行堤瘤,可以把這句注釋
xcrun xcodebuild -workspace QQ.xcworkspace -scheme QQ -sdk iphonesimulator -configuration Debug -arch x86_64 -derivedDataPath build
#安裝到模擬器
xcrun simctl install booted ./build/Build/Products/Debug-iphonesimulator/QQ.app
#模擬器運行玫芦,如果你改了bundle id,記得這里跟著改本辐,否則你跑起來的不一定是你當前編譯的
xcrun simctl launch booted com.tencent.qq
腳本注釋比較清楚桥帆,就不展開講解了,把這段腳本跑起來慎皱,基本就可以編譯成功并運行在模擬器上老虫。
可能遇到的問題:
- 如果沒有編譯成功,那就是你項目代碼的問題茫多,好好檢查一下吧祈匙,試試看在Xcode是否能成功編譯
- 有時候會遇到模擬器沒能成功打開,打開Activity Monitor看看simulator的進程是否已經(jīng)存在地梨,如果存在則kill掉缔恳,并且在terminal下重新執(zhí)行
open -a Simulator
- 打開的模擬器不是你想要的機型洁闰?比如我想打開iPhone 13的模擬器扑眉,但是打開的卻是一個iPhone 6赖钞;這種情況有兩個解決方案,第一種比較簡單雪营,就是打開Xcode献起,然后先用你喜歡的模擬器打開一遍,以后執(zhí)行
open -a Simulator
都會打開這個模擬器了姻政,它會記住它的;第二個方案比較有技術含量岂嗓,下面專門講一下
打開指定模擬
- 首先執(zhí)行
xcrun simctl list
汁展,它會把電腦里支持的模擬器都列出來,并且在后面有一串很長的唯一標記的字符串厌殉,記住它
模擬器列表 - 執(zhí)行
xcrun simctl boot 2245645B-AE71-444E-9965-9F7AAB522CC8
食绿,后面這串改為對應模擬器的即可,這時候就會打開你指定的模擬器了
2公罕、去Xcode化第二步 - 斷點調試
有了第一步炫欺,不需要依賴Xcode也可以把項目編譯并在想要的模擬器上運行了。但是我們平時寫代碼熏兄,除了編譯運行品洛,還需要調試呀,如果你需要斷點調試原生的代碼摩桶,那不好意思,你還是打開Xcode吧硝清。我們這里說的是flutter項目唆香,所以只需要AS就好了(或者VSCode)趾浅,而Xcode本身也并不支持斷點調試flutter。
好了直接上干貨票渠,當?shù)谝徊酵瓿珊螅覀兊捻椖恳呀?jīng)在模擬器跑起來了,接下來要做的就是flutter attach扰藕,點擊下圖紅框的按鈕就好芳撒,當然前面的設備要選你跑起來的模擬器
attach成功后邓深,就可以斷點調試了,至于怎么調試笔刹,那就好好學一下 AS如何調試flutter吧芥备,不擴展了 。
3舌菜、去Xcode化最后一步 - 日志查看
調試除了斷點日月,有時候還需要看log山孔,我們之前看log都是在Xcode上的台颠,現(xiàn)在Xcode沒了,怎么看呢串前?
方法有很多谨读,這里講的是mac給我們提供的一個工具 Console
先來認識一下它哆姻,關注 一下我加紅字的區(qū)域即可
- 首先在左邊選擇你的模擬器(據(jù)說真機也可以用這個方法來看日志)
- 然后在進程里找你的APP的進程,對應的就是你項目的日志了
-
用鼠標選中就可以底部的日志詳細區(qū)看到對應的日志了
Console
那么問題來了,這里打印的是你所選設備的所有日志,太多了吧烹吵,怎么快速篩選呢锈津?
看看右邊的搜索框了嗎琼梆?
如圖所示性誉,可以通過 PROCESS過濾進程名,這樣就過濾出你的進程的日志了
過濾maps的日志
如果你還需要過濾更多的條件茎杂,也可以繼續(xù)在搜索框添加其他條件错览,很簡單,還有其他的功能煌往,比如暫停日志輸出倾哺,清空日志等,自己摸索吧刽脖。
到這里就完全去Xcode化了羞海,可以僅靠AS,就可以完成iOS項目的編譯曲管、斷點調試却邓、看日志了,日常flutter的開發(fā)都滿足了院水。