如何在项目中引入 framework 源代码

如何在项目中引入 framework 源代码

我们需要在项目中以源代码的方式引入 framewwork,是方便我们对框架进行修改。当 framework 构建出来以后,可以通过 Cocoapods 或者 .a 文件的方式引入到我们的项目中。但是如果这个框架需要在项目中进行修改、升级或者定制的时候怎么办?如果只能打开框架工程修改、打包、发布,然后在宿主工程中 pod install/pod update,这未免太不方便。

这时,如果我们拥有框架的源代码,以源代码的方式将框架集成到项目中,在编写 APP 的过程中实时对框架进行修改,不仅能够实时验证框架代码修改后在项目中运行的效果,而且顺便把框架也升级了,从而让其他项目也能同步升级框架的代码,岂不是美哉?

修改 Podfile

将 Podfile 中引入框架的 pod 语句删除,因为现在我们要以源代码的方式集成框架,就不要用 Cocoapods 的方式了。

同时添加框架所依赖的 pods。你可以把框架工程中的 Podfile 的 pods 依赖复制粘贴到这里。

引入框架工程

打开 Finder,将框架的工程文件 .xcodeproj 拖到项目导航器中,注意要拖到我们自己项目的工程文件之下:

注意,此时框架的 .xcodeproj 文件必须处于独占模式,即没有其他进程打开它。如果此时有其它进程打开它,则添加到项目后会显示为不可打开状态:

此时你必须先关闭独占有该 .xcodeproj 文件的其它进程(一般是另外一个 Xcode 窗口),然后再重新添加 .xcodeproj 文件。

选择项目 Target,在 Build Phases 中,将 Target Dependencies 设置为框架,如果框架使用了 Bundle,注意将 Bundle 也添加进 Target Dependencies 中去:

打开 Copy Bundle Resources ,在项目导航器中,打开 framework 工程,将 Products 目录下的 Bundle 文件拖进 Copy Bundle Resources 中:

在 Target 的 General 中,找到 Linked Frameworks and Libraries,确认 framework 已经添加:

编译,看项目是否能够运行。

修改框架源代码

在项目导航器中,点开框架的工程文件,可以看到框架的所有源代码和 Bundle 资源都在这里了,你可以在这里修改框架源代码:

修改完后,你可以立即运行项目,也可以从 Schemes 中选择打包 framework 和 bundle:

记住,修改过框架源代码后,要到框架源代码目录下 commit,在引用项目目录下 commit 是没有用的。

提交 Cocoapods

修改完框架源码后,要让其他项目中也能用到新的框架代码,必须发布新的框架版本到 Cocoapods。这个过程请参考《从已有项目中抽取 framework》。

从项目中去除 framework 源代码

从项目中删除框架源码,实际上是上述过程的逆过程:

  1. 在项目导航器中,将框架的 .xcodeproj 文件删除。
  2. 将 Target Dependencies 中的框架和Bundle 删除。
  3. 修改 Podfile,让框架引用新版本。
  4. pod install。
  5. 打包,上传。

错误

  1. Cycle inside ParkButler-Owner; building could produce unreliable results. This usually can be resolved by moving the shell script phase 'h' so that it runs before the build phase that depends on its outputs. Cycle details: → That command depends on command in Target 'ParkButler-Owner': script phase “[CP] Copy Pods Resources” → That command depends on command in Target 'ParkButler-Owner': script phase “[CP] Copy Pods Resources”

    从对应 Target 的 Build Phases 中删除 [CP] Copy Pods Resources。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值