【iOS 开发】利用 Carthage 将项目打包 Framework 并依赖 CocoaPods 第三方库的方法

栏目: Objective-C · 发布时间: 6年前

内容简介:最近需要将自己公司的项目的打包成我这边演示的是由于打包好的
【iOS 开发】利用 Carthage 将项目打包 Framework 并依赖 CocoaPods 第三方库的方法

最近需要将自己公司的项目的打包成 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

    【iOS 开发】利用 Carthage 将项目打包 Framework 并依赖 CocoaPods 第三方库的方法

  • 由于 Carthagebuild 时,会自动将设置为 Sharedframework target 构建成 framework ,所以需要单击顶部 target ,在弹出选项中选中 Manager Schemes ,将 framework targetShared 选项选中。

2. 创建 podfile 集成第三方库

  • 假设我的代码中要用到 Alamofire 这个第三方库(用于演示),然后使用 CocoaPods 在工程中集成 Alamofire ,集成方法和普通项目一模一样。

  • 创建 podfile 并加入 pod 'Alamofire' ,然后执行 pod install ,然后选择工程下的 FrameworkDemo.xcworkspace 重新打开工程。

    【iOS 开发】利用 Carthage 将项目打包 Framework 并依赖 CocoaPods 第三方库的方法

3. 创建测试代码

  • 我这边创建了一个 TestAlamofire.swift 的测试文件,并在里面使用了 Alamofire 这个库,一会打包就打包这个文件。

  • 然后编译一下,编译通过,测试代码如下。

    【iOS 开发】利用 Carthage 将项目打包 Framework 并依赖 CocoaPods 第三方库的方法

4. 构建 framework

  • 打开终端 cd 到工程目录下,执行以下命令开始打包 framework ,执行完成后会自动将 framework 文件保存在工程的 Carthage/Build/iOS 文件夹下。

    carthage build --no-skip-current
    

    【iOS 开发】利用 Carthage 将项目打包 Framework 并依赖 CocoaPods 第三方库的方法

  • 到此 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
    

    【iOS 开发】利用 Carthage 将项目打包 Framework 并依赖 CocoaPods 第三方库的方法

  • 然后打开 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 文件

  • 编辑完成后,打开终端 cdpodspec 所在文件目录下,输入以下命令来验证编译是否通过。

    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

  • 打开终端 cdpodspec 所在文件目录下,输入以下命令来发布到 CocoaPods

    pod trunk push *.podspec --allow-warnings
    
  • 发布成功会显示 successfully published

  • 到此就发布完成了,我这边讲的比较简单,如果发布 CocoaPods 遇到什么问题或者报错,可以看我的另一篇文章: 【iOS 开发】创建 podspec 文件,给自己写的框架添加 CocoaPos 支持 ,我这边就不详述了。

测试 Framework 的 Pod 库

  • 新建一个测试工程 Test ,然后将刚才传到 CocoaPods 的库引入,然后执行 pod install

    【iOS 开发】利用 Carthage 将项目打包 Framework 并依赖 CocoaPods 第三方库的方法

  • 可以看到 pod 将我们的 frameworkAlamofire 依赖库一起 pod 下来了。

    【iOS 开发】利用 Carthage 将项目打包 Framework 并依赖 CocoaPods 第三方库的方法

  • 然后在控制器中 import FrameworkDemo 引入我们的库,执行库中用到 Alamofire 的一个方法。

    【iOS 开发】利用 Carthage 将项目打包 Framework 并依赖 CocoaPods 第三方库的方法

  • 编译运行成功,打印结果正常。

    【iOS 开发】利用 Carthage 将项目打包 Framework 并依赖 CocoaPods 第三方库的方法

演示Demo 在这,有不懂的地方可以看一下,希望能够帮助大家少走一些坑。

将来的你,一定会感激现在拼命的自己,愿自己与读者的开发之路无限美好。

我的传送门: 博客简书 、微博 、 GitHub


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Intersectional Internet

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》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具