0%

越狱插件开发入门指南(二)& (三):通过thoes初始化项目文件&修改默认的项目配置

上一篇做了准备工作,这一篇开始进入开发

越狱插件开发入门指南系列
越狱插件开发入门指南(一):导言 & 环境准备


2.1 通过theos初始化工程目录

在终端中输入:

1
$THEOS/bin/nic.pl

输入列表中的iphone/tweak这一项前面的数字,例如我这边的10:

根据提示输入插件名作为工程名,例如:HapticAudio:

根据提示选择一个插件的标识符(bundle identifier),一般选择个人域名的倒序+插件名的形式,例如:me.suclogger.hapticaudio:

输入你的名字:

选择插件需要修改的系统功能和安装完成后需要重启的系统功能,可以先保持默认,直接回车即可:

提示Done则表示theos已经成功帮你初始化好了插件的几个文件,当前目录下会多出插件名命名的目录:

2.2 theos文件解读

  1. control文件:包含了插件包的一些基础信息,主要就是你在上一步中录入的信息
  2. plist后缀文件:定义了插件需要作用的目标应用/系统服务的标识,默认是 com.apple.springboard
  3. makefile文件:指定了如何编译插件
  4. Tweak.x文件:插件代码文件,我们的插件逻辑主要就是放在这个文件中

后面在插件开发实例中会详细展开对这几个文件的操作,目前只要确保有这几个文件即可。


初始化好项目文件后,下一篇进入对每个文件的具体编辑。


3.1 修改control文件

control文件记录了插件包的基本信息,会被打包到最终的插件安装包中,上一步生成的control文件内容如下:

1
2
3
4
5
6
7
8
9
Package: me.suclogger.hapticaudio
Name: HapticAudio
Depends: mobilesubstrate
Version: 0.0.1
Architecture: iphoneos-arm
Description: An awesome MobileSubstrate tweak!
Maintainer: suclogger
Author: suclogger
Section: Tweaks

其中:

  • Package这一栏描述这个插件的名字,命名方式同常见的iOS安装包的bundle identifier类似,采用个人域名的反向作为前缀。
  • Name描述工程的名字
  • Depends描述这个工程的依赖,即这个软件运行的前提要求,一般是其他软件或者特定的固件版本。我这里会添加 firmware (>= 13) 来指定这个插件只支持 iOS 13及之后的系统版本
  • Version顾名思义是插件的版本
  • Architecture指定安装设备的硬件架构,无需更改
  • Description是插件的功能描述,可以按需修改
  • Maintainer是指插件包的维护者,不一定等于开发者,如bigboss源上的所有插件的Maintainer都是bigboss
  • Author顾名思义指插件作者
  • Section指的是插件的deb安装包归属的程序类别,无需更改

control文件支持的所有字段可以参考debian官网: https://www.debian.org/doc/debian-policy/ch-controlfields.html

3.2 修改Makefile文件

Makefile文件指定工程用到的文件、框架、库等信息。

原始的Makefile文件如下:

1
2
3
4
5
6
7
8
9
10
INSTALL_TARGET_PROCESSES = SpringBoard

include $(THEOS)/makefiles/common.mk

TWEAK_NAME = HapticAudio

HapticAudio_FILES = Tweak.x
HapticAudio_CFLAGS = -fobjc-arc

include $(THEOS_MAKE_PATH)/tweak.mk

默认的这些信息可以先保持不变,我们还需要添加一些额外信息。

指定处理器架构

通过ARCHS指定处理器架构为arm64,如果你的插件需要兼容很老的机型(iPhone 5之前),这里还需要添加armv7

1
ARCHS = arm64 arm64e

指定编译使用的iOS SDK版本

这时候要用到第一篇中我们在$THEOS/sdks目录下的不同版本的SDK,比如:

1
TARGET = iphone:latest:8.0

指的是采用8.1版本的SDK作为基础SDK版本进行编译,且发布对象为iOS 8.0及以上的版本。

这里我们需要制定第一篇中的11.2作为编译基础SDK,发布对象也保持一致。

最终的Makefile的内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
ARCHS = arm64 arm64e
TARGET = iphone:11.2:11.2

INSTALL_TARGET_PROCESSES = SpringBoard

include $(THEOS)/makefiles/common.mk

TWEAK_NAME = HapticAudio

HapticAudio_FILES = Tweak.x
HapticAudio_CFLAGS = -fobjc-arc

include $(THEOS_MAKE_PATH)/tweak.mk

以上我们就完成了项目文件的基本配置,下一章就进入插件内容的编写。

加入星球与我交流