建立tweak工程,最重要的就是配置theos。
這里插一段話,上一章講了從無到用usbmuxd連接越獄手機,網上普遍文檔是直接 ssh root@ip的 然后tweak的配置也是直接傳到這個ip,而一部分講的是usbmuxd用USB線連接越獄手機 ?然而,我遇到的困難是 ssh root@ip 無法直接連接到手機,也不是錯誤,就是無反應,哪怕有個錯誤也好,開一整晚都無反應,而用 ping ip 得到的是連接正常,關于這個問題請教過很多人,也包括大牛,都無法解決,所以這里后續會補充 如何在USB連接情況下 ssh傳輸數據給手機,這步也是卡了我這10天節奏的主要原因,我就一菜鳥,希望把我這一步一步東西,都分享給大家,我知道自己摸索有多麻煩,我也是直接摸索過來的。
首先,安裝theos。
這里首先要注意路徑問題,一開始不懂,自己在/opt/下建立了一個theos文件夾,后來沒辦法 用 rm -rf /opt/theos 刪除重新安裝,不然后面很多配置問題不能和網上對應,開始初學還是盡量都跟著主流教程走。
在命令行 輸入1、 export THEOS=/opt/theos? 2、sudo git clone git://github.com/DHowett/theos.git $THEOS
這時候使用 ?/opt/theos/bin/nic.pl (這句話是可以打開tweak模板)
如果出現這個錯誤
[error] Cowardly refusing to make a project inside $THEOS (/opt/theos/)
這個需要修改.bash_profile文件就在路徑~下 沒有的自己建立就好 ‘.’表示隱藏文件 手動mac下不讓建立? 可以用touch 命令建立? 然后用vi 在里面添加
export THEOS=/opt/theos
export PATH=/opt/theos/bin/:$PATH
這兩句話 這個就是路徑問題? 之所以上面說我自己建立了個theos文件夾 然后里面再裝theos 我修改這里 為/opt/theos/theos 作用無效 不知道哪里有問題,為了避免扯太多麻煩,初學階段暫不研究,就重裝了theos。
然后輸入/opt/theos/bin/nic.pl
這個時候應該就可以了 ?能夠出現
這個時候就說明theos安裝成功 ?我們選擇11,網上大多還是5,有點過時,可能你們裝的時候也不是11了,注意選擇tweak就好
然后填寫一些東西,什么bundle 組織名 作者 就是最后一條要注意,是安裝完成后需要重啟的應用,以進程名表示
cd到工程目錄下 先用 命令 make 一下 我的理解 應該是編譯的意思,
Makefile:1: theos/makefiles/common.mk: No such file or directory
Makefile:7: /framework.mk: No such file or directory
make: *** No rule to make target `/framework.mk'.Stop.
如果出現如上錯誤 使用 ln -sf $THEOS 重新使用make
這時候錯誤變成
==> Error:The vendor/include and/or vendor/lib directories are missing. Please run `git submodule update --init --recursive` in your Theos directory. More information: https://github.com/theos/theos/wiki/Installation.
make: *** [before-all] Error 1
說的很明白 讓我們運行git submodule update --init --recursive這句話 ,都不用google了 這時候回到 theos目錄下 使用sudo git submodule update --init --recursive 注意加上sudo 這里有權限問題
然后再回到項目里面 使用make 這時候編譯很順利?
不要注意yueyu兩個字 ?這個tweak我來來回回建了3 4個吧 名字不重要
這時候需要安裝ldid,簽名用的,這塊我本來想理一下再發,還是先發一下吧 ?不然萬一影響安裝就抱歉了
首先直接輸入 ldid
應該是直接輸入ldid ?但我記得好像還下過一個ldid的包,不是很記得有沒有影響,如果有影響,可以私聊我,把這個包發你們。
應該是有影響的,你們可以自行網上下載個ldid 或者找我要一個,網上大多需要把ldid這個bin文件拷貝到/usr/bin目錄下 但是mac這個文件夾權限不開放,不管用什么命令都無法將文件拷到這個目錄下,這個很氣啊,然后網上說可以/usr/local/bin用這個路徑代替/usr/bin路徑 因為會先從/usr/local/bin目錄加載 然后再加載/usr/bin目錄 ?不清楚是不是這個說法?
sudo cp /Users/pro_cookie/Downloads/ldid /usr/local/bin
然后使用這句 將文件拷貝到了 /usr/local/bin目錄
這樣就算配置成功了? 后來發現 我好蠢啊? 好像使用brew install ldid就可以搞定這個 brew是個命令行安裝工具的神器? 沒有的趕緊自行安裝 別問我? 因為我忘了 這個brew使用起來感覺和pip pod這些一樣? 很簡單? 另外提一點 網上很多N年前的版本? 當時使用的命令是apt-get 等同于 brew ?我之前很蠢 ?不明白 ?然后想安裝個apt-get 安裝死我了 ?后來因為好像驗證還是什么證書問題 反正好像現在裝不了了 ?大家都說用brew代替了這個apt-get
好了 ?這個時候ldid也裝好了 ?回到我們的工程來
使用cat 命令可以直接看文件內容,很好的命令
然后 說明一下 makefile文件是配置一些版本信息的 ?我給大家看一下我成功的配置
這里需要說明的,就是開頭提到的USB連接方式ssh傳輸數據,網上有的是THEOS_DEVICE_IP = xxx.x.x.x 沒有下面這句 export THEOS_DEVICE_PORT = 2222 因為他們都是wifi連接 ?。。。 我因為這句話至少卡了我5天時間 后來還是在公車上看帖子看到的,回來一試 果然成功了 export應該是多余的 ?只要后面的就好這里還需要注意的是 ?我的工程名是 secondTest ?自己根據自己的工程名修改上面需要修改的地方 自己找不同啊
然后是 Tweak.xm文件 這文件里面是我們要寫的代碼都寫在這里面,初始模板的文件是都被注釋掉的 運行起來 手機就springBoard刷新一下 ?然后沒反應,我一開始不知道 還奇怪 代碼都有 手機也有反應了 怎么沒出效果 ?后來才發現被注釋掉了
上面部分是初始模板 ?我代碼是%hook %end之間這段?
然后運行make package install 就應該能傳輸到手機了
中間還有一些錯誤解決 ,不太記得了 ,我在最后說一下吧
Makefile:1: /makefiles/common.mk: No such file or directory
Makefile:6: /tweak.mk: No such file or directory
make: *** No rule to make target `/tweak.mk'.Stop.
如果出現這個錯誤? 就需要export THEOS=/opt/theos一下
==> Error:/Applications/Xcode.app/Contents/Developer/usr/bin/make install requires that you set THEOS_DEVICE_IP in your environment.
==> Notice:It is also recommended that you have public-key authentication set up for root over SSH, or you will be entering your password a lot.
make: *** [internal-install] Error 1
如果出現這個錯誤 就需要export THEOS_DEVICE_IP=127.0.0.1
如果上傳手機最后一步中出現了這個錯誤? 就需要 這就比較麻煩了 和下面那個錯誤不一樣? 這個錯誤是我自己亂搞? 不知道搞了什么搞出來的? 后來 去theos重新找了deb.mk文件 這個文件千萬不要亂修改
dpkg-deb: error: obsolete compressiontype'lzma'; use xz instead Type dpkg-deb--helpforhelpabout manipulating*.deb files;Typedpkg--helpforhelpabout installing and deinstalling packages.make:***[internal-package]Error2
如果出現上面這個錯誤
/opt/theos/makefiles/package
sudo vi deb.mk ?使用這句代碼 ?上面那句是路徑
這里需要把lzma 改成xz 因為無法解壓xz文件 注意 !!!!這個文件里面還有一個錯誤
?$(ECHO_NOTHING)COPYFILE_DISABLE=1 $(FAKEROOT) -r dpkg-deb -Zgzip -b "$(THEOS_STAGING_DIR)" "$(_THEOS_DEB_PACKAGE_FILENAME)" $(STDERR_NULL_REDIRECT)$(ECHO_END)??
這段替換我整出了一個無語的錯誤? 然后選擇重新替換掉deb.mk文件才解決? 并不是原theos的deb.mk文件
附上個連接https://github.com/moloch--/theos這個里面的/makefiles/package里面的deb.mk文件 替換之后好像連修改lzma變成xz都不需要了 我傳個截圖看看吧
自己摸索就是困難,希望有初學者能夠互相交流一下,這個tweak的基本上所有坑都躺過 很多錯誤都沒發表 ?有些找不到源頭了 ?有些改文件里面的 忘了改了什么 實在對不住大家 ?不過記憶深的都發出來了 ?既然是記住的 ?說明比較麻煩 ?記不住的 ?說明大家自己查下就能很簡單的解決了 ?