【iOS 开发】利用 Carthage 将项目打包 Framework 并依赖 CocoaPods 第三方库的方法
栏目: Objective-C · 发布时间: 6年前
内容简介:最近需要将自己公司的项目的打包成我这边演示的是由于打包好的
最近需要将自己公司的项目的打包成 Framework
然后以 SDK
的形式来供客户使用,但是项目中用到不少 Cocoapods
第三方的库,怎么才能将项目打包 Framework
并依赖 CocoaPods
第三方库呢,网上找了很久都没有找到一篇专门说这个的,让我走了很多的坑,手动打包 Framework
太麻烦,开始尝试了 cocoapods-packager 方式打包,但是这个插件貌似对于 Swift
项目的支持并不是很好,尝试很久都没有打包成功,作者貌似也不是很活跃,无奈放弃,最后选择用 Carthage
方式来打包 Framework
,下面就分享一下利用 Carthage
将项目打包 Framework
并依赖 CocoaPods
第三方库的方法。
创建工程并打包 Framework
我这边演示的是 Swift
工程, Objective-C
也是一样的, 演示Demo 我会保留,不懂的可以看一下。
1. 创建 Framework 工程
-
新建一个工程或者在现有工程下创建一个新的
target
,类型需要选择Coaoa Touch Framework
,这里说一下我的Xcode
版本是10.0.0
。 -
由于
Carthage
在build
时,会自动将设置为Shared
的framework target
构建成framework
,所以需要单击顶部target
,在弹出选项中选中Manager Schemes
,将framework target
的Shared
选项选中。
2. 创建 podfile 集成第三方库
-
假设我的代码中要用到
Alamofire
这个第三方库(用于演示),然后使用CocoaPods
在工程中集成Alamofire
,集成方法和普通项目一模一样。 -
创建
podfile
并加入pod 'Alamofire'
,然后执行pod install
,然后选择工程下的FrameworkDemo.xcworkspace
重新打开工程。
3. 创建测试代码
-
我这边创建了一个
TestAlamofire.swift
的测试文件,并在里面使用了Alamofire
这个库,一会打包就打包这个文件。 -
然后编译一下,编译通过,测试代码如下。
4. 构建 framework
-
打开终端
cd
到工程目录下,执行以下命令开始打包framework
,执行完成后会自动将framework
文件保存在工程的Carthage/Build/iOS
文件夹下。carthage build --no-skip-current
-
到此
framework
就打包完成了,想了解更多关于Carthage
打包的详情,可以看我另一篇文章: 【iOS 开发】给自己项目添加 Carthage 支持的方法 ,方法基本一致,我这边就不详述了。
将 Framework 传到 Cocoapods 仓库
由于打包好的 framework
需要依赖 Alamofire
这个库,单独运行会报错,如果直接将 framework
给客户让客户自己依赖 Alamofire
的话,并不友好,所以打算将 framework
传到 Cocoapods
仓库,并指定 Alamofire
依赖库,这样客户直接 pod
我们封装好的库即可。
1. 创建 Git 仓库
- 先创建一个
Git
仓库,仓库中必须包含一个License
文件,类型为MIT License
。 - 接着
Clone
到本地,将刚才打包的Framework
放进去,我这边就直接将测试工程放进去了。
2. 创建 podspec 文件
-
在仓库目录下新建一个
podspec
文件,文件名就是pod
库的名称,我这边叫FrameworkDemo_Gzz.podspec
,或者使用以下命令创建。pod spec create FrameworkDemo_Gzz
-
然后打开
podspec
文件,内容编辑如下,内容的具体意思我这边就不详述了。Pod::Spec.new do |s| s.name = 'FrameworkDemo_Gzz' s.version = '1.0.0' s.summary = '测试 Framework' s.homepage = 'https://github.com/Jonzzs/FrameworkDemo' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'Jonzzs' => '292710547@qq.com' } s.source = { :git => 'https://github.com/Jonzzs/FrameworkDemo.git', :tag => s.version } s.platform = :ios s.ios.deployment_target = '9.0' s.swift_version = '4.0' s.ios.vendored_frameworks = 'Carthage/Build/iOS/*.framework' # 依赖库 s.dependency 'Alamofire' end
3. 验证 podspec 文件
-
编辑完成后,打开终端
cd
到podspec
所在文件目录下,输入以下命令来验证编译是否通过。pod lib lint --allow-warnings --verbose
-
验证通过会显示
FrameworkDemo_Gzz passed validation
。
4. 给项目打上 tag 并上传
-
podspec
文件验证成功后,先将改动后的文件commit
提交,接着push
推送到远程仓库 。 -
因为
CocoaPods
是依赖项目的tag
版本的,所以必须打上tag
版本,执行以下命令打上tag
版本,版本名必须要和之前podspec
文件中的s.version
一致。git tag "1.0.0" // 为 git 提交打上 tag git push --tags // 将 tag 推送到远程仓库
5. 发布到 CocoaPods
-
打开终端
cd
到podspec
所在文件目录下,输入以下命令来发布到CocoaPods
。pod trunk push *.podspec --allow-warnings
-
发布成功会显示
successfully published
。 -
到此就发布完成了,我这边讲的比较简单,如果发布
CocoaPods
遇到什么问题或者报错,可以看我的另一篇文章: 【iOS 开发】创建 podspec 文件,给自己写的框架添加 CocoaPos 支持 ,我这边就不详述了。
测试 Framework 的 Pod 库
-
新建一个测试工程
Test
,然后将刚才传到CocoaPods
的库引入,然后执行pod install
。 -
可以看到
pod
将我们的framework
和Alamofire
依赖库一起pod
下来了。 -
然后在控制器中
import FrameworkDemo
引入我们的库,执行库中用到Alamofire
的一个方法。 -
编译运行成功,打印结果正常。
演示Demo 在这,有不懂的地方可以看一下,希望能够帮助大家少走一些坑。
将来的你,一定会感激现在拼命的自己,愿自己与读者的开发之路无限美好。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Intersectional Internet
Safiya Umoja Noble、Brendesha M. Tynes / Peter Lang Publishing / 2016
From race, sex, class, and culture, the multidisciplinary field of Internet studies needs theoretical and methodological approaches that allow us to question the organization of social relations that ......一起来看看 《The Intersectional Internet》 这本书的介绍吧!