前言

上一篇 透過 SSH 安裝越獄套件 中,已讓 iOS 設備將在 Respring 後彈出一個警告窗框。

雖然警告窗框可以輸出自訂訊息,但若所有訊息都使用警告窗框輸出的話,既花時間也不務實。

接下來,將透過HBLogDebug()向系統日誌輸出 Log 訊息,提高除錯效率。


實作過程

Tweak.xm

於欲輸出訊息處使用HBLogDebug()即可:

%hook SpringBoard //指定要 hook 的類別,需要以 %end 結尾
- (void)applicationDidFinishLaunching:(id)arg1 //指定要 hook 的函式
{
  %orig; //呼叫原始函式

  UIAlertView * alert =
  [[UIAlertView alloc] initWithTitle:@"Hello"
                             message:@"It is my first tweak."
                            delegate:self
                   cancelButtonTitle:@"OK"
                   otherButtonTitles:nil];
  [alert show];
  // [alert release];
  // ARC 預設開啟,不用手動 release

  HBLogDebug(@"Hello");
  HBLogDebug(@"It is my first tweak.");
  HBLogDebug(@"arg1:%@",arg1); // 輸出變量 arg1

}
%end

查看日誌輸出

  1. 將 iOS 設備透過傳輸線連上電腦,開啟 macOS 內建的系統監視程式.app

  2. 於左方裝置面板選中 iOS 設備。

  3. 於右上搜尋 Tweak 名稱(本例為:hello)或Tweak或 關鍵字。

  4. 將顯示以下輸出:

[1;36m[hello] Tweak.xm:16 DEBUG: Hello
[1;36m[hello] Tweak.xm:17 DEBUG: It is my first tweak.
[1;36m[hello] Tweak.xm:18 DEBUG: arg1:<SpringBoard: 0x106011000>

修正彩色輸出

上述輸出中才會穿插出現不必要的字符,是因為HBLogDebug()預設採用色彩輸出訊息。

但是系統監視程式.app並不支援顯示顏色,若要改為無色彩輸出只需要於Tweak.xm開頭加上:

// 移除 HBLogDebug() 顏色
#undef HB_LOG_FORMAT
#define HB_LOG_FORMAT(color) CFSTR("[%s: %s:%d] %s: %@")