建立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的基本上所有坑都躺过 很多错误都没发表 有些找不到源头了 有些改文件里面的 忘了改了什么 实在对不住大家 不过记忆深的都发出来了 既然是记住的 说明比较麻烦 记不住的 说明大家自己查下就能很简单的解决了