在iOS开发中,有时候为了项目模块间的相互独立性,降低模块间的耦合,通常将底层相对稳定的模块抽取出来,形成SDK,以静态包或者静态库的形式引入项目。这中间免不了编译打包静态包/库,通常的做法是模拟器和真机分别编译,然后再将两个静态包或者库lipo
合并成一个。这样的工作做多了,难免觉得麻烦,想省事儿,整一脚本变得自然而然了。
1. 创建一个静态包/库工程(已有请跳过这一步)
创建如下图:
在Trargets下面,点击左下角的“+”,选择添加一个新的Target, 然后选择“Aggregate”选项,新建一个集合类target,如下图所示:
2. 给集合类添加依赖
在Targets下面选中我们新建的集合类,然后Build Phases –> Target Dependencies 下面添加我们需要编译的静态库,如下图所示:
3. 添加脚本
在Targets下面选中我们新建的集合类,然后在Build Phases下,点击左上角的“+”,选择”New Run Script Phase”选项,如下图:
然后设置我们运行的脚本的所在位置,如下图所示:
注意:
../scripts/build-framework.sh 表示脚本的位置在当前工程的上一个目录下地scripts文件夹下. 当然”../“也可以用”${SRCROOT}/../“来代替.
脚本位置可根据实际情况自行设置。
4. 选择我们创建的集合类的target,编译
在编译时,你可能会遇到下面的错误:
这是因为shell脚本,还没有添加可执行的权限。
解决办法:在终端上, cd 进入到脚本所在的文件夹; 然后使用 chmod +x ./yourShellName.sh 命令, 成功之后,就可以正常的运行Xcode工程了。
5. 指定target
一般来说我们编译的target名称,跟我们的project工程的名称是一样的,但是,如果我们修改了我们的target名称,需要在我们制定脚本的位置后面跟上我们需要编译的target名称,既:脚本位置+空格+target名称。如下图:
6. shell脚本源码
编译library的脚本
|
|
编译framework的shell脚本
|
|