Skip to content

皮樂教你如何在Mac上面寫Mobile Substrate外掛(上)

所謂Mobile Substrate呢,就是一個在iPhone越獄之後,可以讓你修改既有程式功能的軟體,

一般我們修改軟體功能有兩種方式,一是直接修改程式本身,

二就是利用外掛,讓程式在本身不變的情況下,可以被我們自定的函式覆蓋掉原本的功能。

 

這個Mobile Substrate,就是讓你用第二種方式修改程式的一個軟體。

在開始之前,我們必須要先裝 xcode 在 Mac上 ,

我用的是Mac OS X 10.9 + xcode 5,不過其他版本也是差不多的。

 

接著配置環境,現在配置環境很簡單,終端機裡面直接下指令:

然後讓他跑完就收工了。

接著打開 /opt/theos/include/IOSurface/IOSurfaceAPI.h

搜尋「10_7」,把出現的那行(應該共兩個),跟他上面那一行給註釋掉

(應該是在 251,252 還有 255,256 行)

 

如果找不到 IOSurfaceAPI.h 請上網找解決方法,因為這個是受到版權保護的檔案

一般來說是直接從 Mac 系統裡面拷貝出來的,但是不知道為甚麼有些人會沒有

 

再來, 我們先在終端機執行 cd / 到你想建立檔案的位置去,

再輸入

會出現如下選項

NIC 1.0 – New Instance Creator
——————————
[1.] iphone/application
[2.] iphone/library
[3.] iphone/preference_bundle
[4.] iphone/tool
[5.] iphone/tweak
Choose a Template (required):

這邊輸入 tweak 所對應的代號 (範例中是 5,實際情況請看你的畫面),

再填入Project Name以及Package Name(自己取名),

Author 當然是自己名字啦,比較重要的是 MobileSubstrate Bundle filter,

這邊要寫入你想修改的軟體Bundle名稱,

如果是在iOS系統上,關於介面修改的大概就是 com.apple.springboard,或者 com.apple.UIKit 了吧。

如果是針對單一程式修改,則要輸入該程式的 Bundle ID。

 

接下來在你原本終端機指定的位置就會多一個資料夾,

裡面有個 Tweak.xm 就是我們要寫程式的地方啦~

 

再看到Makefile這個檔案,你可以直接用現成的,但你可以把它整個取代,改成以下的內容

 

把myTweak改成你的作品名稱,10.0.1.2 改成你的iPhone IP,

Frameworks 跟 PrivateFrameworks 改成你要使用的 Framework。(對初學來說的話,跟我上面的一樣應該就夠了)

最後,在 iPhone 上面裝 SSH 跟 rsync,

這樣子的話,你只要輸入 make sync,而外掛編譯成功的話,

就會自動同步到iPhone裡面,而不需要手動放進去再respring。

所以接下來,只要修改 Tweak.xm 的內容,就可以寫出Mobile Substrate的外掛了~

 

接下來講我遇到的一些問題的解決方法:

1. 系統說找不到 IOSurfaceAPI.h

這個問題是因為 IOSurfaceAPI.h 不是免費或者開源的檔案,所以安裝的時候沒有提供,

但是你可以在 Mac OS X 10.6 以上的 /System/Library/Frameworks/IOSurface.framework/Headers/ 找到。

 

2. 明明沒有出現 error 卻無法編譯

這時候看一下是不是出現了 “treats all warnings as errors” 之類的提示

如果是的話,找 /opt/theos/makefiles/common.mk

找到包含 werror 的這行,然後刪除(應該是 INTERNAL_CFLAGS += -Werror)

這樣應該就可以了

發佈於開發技巧

10 則留言

  1. 皮樂 皮樂

    如果是在 Xcode 4.3的話,要在終端機輸入

    sudo ln -s /Applications/Xcode.app/Contents/Developer/ /Developer
    以及
    sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer
    這樣才可以正常編譯

  2. CEO CEO

    想請教你^^
    有範例可以看嗎?
    因為我不清楚Tweak.xm的撰寫方式
    (小弟英文不太好Q_Q)

    • 皮樂 皮樂

      在github很多耶,許多免費tweak都有公開原始碼

  3. 頭號哆啦迷 頭號哆啦迷

    大大你好,打擾了,請問一下,dylib的tweak要如何打開?
    我想修改SiriServerLanguage(讓Siri可以選擇中文的tweak)讓它支持粵語和中文(台灣)不過一直打不開。聽人家說xcodeIDE可以打開,不過沒有找到xcodeIDE開的方法,所以來請問一下大大,謝謝

    • 皮樂 皮樂

      我不懂開不開的意思,只要你把dylib放在正確的位置,就會啟用了

  4. usepccom usepccom

    为什么我用的是SDK 5.1编译进设备里没显示?设备是IOS 5.1.1的。

    • 皮樂 皮樂

      你可能沒裝rsync,或者SSH沒正確執行吧?但是手動拖進去再respring也是可以的

  5. habor habor

    楼主您好,最近我也在学习写tweak,但不知道为什么我写的tweak打包生成的deb始终在设备上无法运行,甚至直接建一个空的项目都不行。具体情况是:使用Terminal(ios上的)安装deb并重启后,桌面上生成了图标,但一点就整个屏幕一闪,连程序的UI界面都无法进入,设备用的ipad3 5.1.1,编译打包都是用的make,xcode版本是4.4.1,系统版本是lion 10.7.4,希望大牛能指点迷津

    • 皮樂 皮樂

      你好,Tweak 並不是一個在桌面執行的程序,而是在背景執行的插件,
      如果你是要作應用的話,可以使用iOSOpenDev這個東西,他可以讓你用Xcode 來作越獄應用。

發表迴響