macOS 第三方輸入法debug 方法

macOS 已經更新到 26 了, 但對於第三方輸入法的支持一直沒有任何變化,最新的 Xcode 26 破壞了之前我一直用的方法——直接把編譯路徑改到 /圖書館/輸入 方法 現在這麼做 xcode 會報錯,因為項目依賴的 framework 不會再寫到這個目錄了。

只有去掉所有更改編譯目錄的設置後編譯就可以成功。我猜測大概是因為新版的 SPM 不再遵循 Xcode 項目輸出目錄設置了……總之,已經用了好幾年的辦法不行了,得換新的。

新的 debug 方案

很多人說macOS 第三方輸入法是不能直接 attach 的,這樣會導致系統卡死。其實不會,自從上次蘋果更新了 macOS 第三方輸入法架構後就沒問題了。只是不要在 attach 的情況下切換到 Xcode 就行。所以恢復到傳統的編譯→複製app到 /圖書館/輸入 方法 →註銷系統→在系統終端裡查看 print 這種流程是萬萬無法接受的。

根據 Gemini 3 的建議,首先我一直用的辦法確實是不行了,回復到默認編譯路徑後,可以用 post script 殺掉當前進程並將編譯的 app 移動到輸入法目錄,這就解決了app位置問題。

值得注意的是,不能使用 Xcode 的 run script, 因為那是編譯的一部分,不論如何設置順序,Xcode 都會在鏈接和簽名之前執行,這樣你拷貝過去的 app 就是未完成的狀態, 就不能運行的。

解決辦法是編輯項目的 scheme, 添加腳本到 build 的 post-actions 裡:

使用 post-actions 來將編譯好的 app 移動到 /Library/Input Method 目錄
使用 post-actions 來將編譯好的 app 移動到 /Library/Input Method 目錄

注意要把 “Provide build settings from” 這個選成你的 target, 如果是默認的 none,則不會帶有項目的環境參數。這樣腳本就沒辦法找到 app 的路徑了:

接下來, 就是搞定 debug attach 的問題了。

使用 /Library/Input Method 目錄代替原本 app 路徑進行debug
使用 /Library/Input Method 目錄代替原本 app 路徑進行debug

同樣繼續修改 scheme,這次是 run 頁面,在可執行文件這裡,要選 other,然後手動定位到 /圖書館/輸入 方法 目錄下的 app 上,這樣在編譯後 xcode 就會自動從那裡啟動進程,代替系統啟動,所有 print 等debug 信息就還能正常顯示在終端。

我曾嘗試關閉 Xcode 自動執行,讓它等待我手動啟動。但這樣的結果就是系統啟動了輸入法,由於啟動身份不同,在 xcode 上 debug 出來的信息全都被 <私人的> 遮蓋了。

本文由 落格博客 原創撰寫:落格博客 » macOS 第三方輸入法debug 方法

轉載請保留出處和原文鏈接:https://www.logcg.com/archives/4196.html

關於作者

R0uter

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。