(7)theos安装

安装签名工具ldid

  • 先确保安装了brew
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • 利用brew安装ldid
$ brew install ldid

修改环境变量

  • 编辑用户的配置文件
$ vim ~/.bash_profile
  • .bash_profile文件后面加入以下2行
export THEOS=~/theos
export PATH=$THEOS/bin:$PATH
  • .bash_profile配置的环境变量立即生效(或者重新打开终端)
$ source ~/.bash_profile

下载theos

  • 建议在$THEOS目录下载代码(也就是刚才配置的~/theos
$ git clone --recursive https://github.com/theos/theos.git $THEOS

新建tweak项目

  • cd到一个存放项目代码的文件夹(比如桌面)
$ cd ~/Desktop
$ nic.pl
  • 选择[11.] iphone/tweak
  • 填写项目信息
    • Project Name (项目名称)
    • Package Name(项目ID,可随便写)
    • Author/Maintainer Name
      • 作者
      • 直接回车就行,默认Mac上的用户名
    • [iphone/tweak] MobileSubstrate Bundle filter
      • 需要修改的APP的Bundle identifier
      • 可以通过Cycript查看APP的Bundle identifier
    • [iphone/tweak] List of applications to terminate upon installation
      • 直接回车就行

编辑Makefile

  • 在前面加入环境变量,写清楚通过哪个IP和端口访问手机
    • THEOS_DEVICE_IP
    • THEOS_DEVICE_PORT
export THEOS_DEVICE_IP=127.0.0.1
export THEOS_DEVICE_PORT=10010


include $(THEOS)/makefiles/common.mk

TWEAK_NAME = tingtweak2
tingtweak2_FILES = Tweak.xm

include $(THEOS_MAKE_PATH)/tweak.mk

after-install::
	install.exec "killall -9 SpringBoard"

如果不希望每个项目的Makefile都编写IP和端口环境变量,也可以添加到用户的配置文件中,编辑完毕后$ source ~/.bash_profile(或者重启终端)

$ vim ~/.bash_profile
export THEOS=~/theos
export PATH=$THEOS/bin:$PATH
export THEOS_DEVICE_IP=127.0.0.1
export THEOS_DEVICE_PORT=10010
$ source ~/.bash_profile

编写代码

  • 打开Tweak.xm文件
%hook XMSoundPatchImageView

- (id)initWithFrame:(struct CGRect)arg1{
	return nil;
}

%end

%hook XMAdAnimationViewTwo

- (id)initWithFrame:(struct CGRect)arg1{
	return nil;
}

%end

编译-打包-安装

  • 编译
make
  • 打包成deb
make package
  • 安装
make install

可能遇到的问题

make package的错误

 $ make package
  Can't locate IO/Compress/Lzma.pm in @INC (you may need to install the
  IO::Compress::Lzma module) (@INC contains: /Library/Perl/5.18/darwin-
  thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-
  thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2
  /System/Library/Perl/5.18/darwin-thread-multi-2level
  /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-
  multi-2level /System/Library/Perl/Extras/5.18 .) at
  /Users/mj/theos/bin/dm.pl line 12.
  BEGIN failed--compilation aborted at /Users/mj/theos/bin/dm.pl line 12.
  make: *** [internal-package] Error 2
  • 是因为打包压缩方式有问题,改成gzip压缩就行了
    • 修改dm.pl文件,用#号注释掉下面两句
$ vim $THEOS/vendor/dm.pl/dm.pl
#use IO::Compress::Lzma;
#use IO::Compress::Xz;
  • 修改deb.mk文件第6行的压缩方式为gzip
$ vim $THEOS/makefiles/package/deb.mk
           _THEOS_PLATFORM_DPKG_DEB_COMPRESSION ?= gzip

make的错误

$ make
  Error: You do not have an SDK in
  /Library/Developer/CommandLineTools/Platforms/iPhoneOS.platform/Developer/S
  DKs
  • 是因为多个Xcode导致路径(可能安装了多个xcode),需要指定以下xcode
$ sudo xcode-select --switch
/Applications/Xcode.app/Contents/Developer/
  • 之前编译过,有会有以下提示
$ make
  > Making all for tweak xxx...
  make[2]: Nothing to be done for `internal-library-compile'. 

这是因为缓存导致的,但是不影响操作,如需出现原来的打印,可以clean一下

$ make clean
$ make

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏娱乐心理测试

SDWebImage源码解读(一)

SDWebImage 是目前最流行、使用最广泛的第三方图片处理框架,它不仅能够异步加载网络图片,还提供了一套图片缓存管理机制(内存缓存+磁盘缓存),功能非常强大...

603
来自专栏向治洪

React Native打包

前面写了关于React的一系列入门章:http://lib.csdn.net/xiangzhihong8/5375/chart/React%20Native ...

3645
来自专栏一个爱瞎折腾的程序猿

为 VUE 项目添加 PWA 解决发布后刷新报错问题

下面这些文件忘记出处是哪,Github也能搜到一些,之前写的 PWA 的 Demo 里面拿过来的~

1301
来自专栏静默虚空的博客

Webpack 资源管理

资源管理 ? 提示: 1、版本问题 本文基于 webpack 2.x 版本。webpack 2.x 相比 webpack 1.x 有重大改变。所以,如果你的...

2187
来自专栏软件测试经验与教训

Fiddler用法整理

读书与实践是获取知识的主要渠道,学习的权力只掌握在每个人自己手中,让学习成为一种生活的习惯,这比任何名牌大学的校徽重要得多!

1691
来自专栏前端儿

前端代码乱糟糟?是时候引入代码质量检查工具了

为了统一团队的代码规范,除了一纸规范说明之外,还需要引入工具进行限制。虽说工具并不能完全实现规范中的规则,但至少能够在一定程度上缓解代码不统一的局面。

3431
来自专栏无所事事者爱嘲笑

ionic2 处理android硬件返回按钮

1364
来自专栏IT可乐

HTML中的超链接

超链接:也叫URL(Uniform Resource Locator),就是统一资源定位器。一般效果是我们点击网页上某个地方,网页会自动跳转到另外一个地方。 一...

3525
来自专栏Web 开发

用fiddler进行debug

昨晚在家里调试一个页面,弄了好一会,fiddler都没有抓到数据。最后Google之,才发现因为我等都装了SwitchySharp这类自动翻墙插件。导致Chro...

820
来自专栏慎独

Unity5.6与Xcode8.3原生工程整合交互

1561

扫码关注云+社区

领取腾讯云代金券