前言
在前面的章节中有介绍过CocoaPods
的使用:
此篇文章会着重介绍下制作过程以及记录过程遇到的一些问题和解决办法。
制作过程
首先,我们要先了解整个制作过程,这样我们来快速的了解下制作的整体流程,以便于我们在后面的制作中有一个清晰的步骤。
- 创建私有的源仓库 (如果已经存在源仓库,忽略此步)
- 创建私有的
Pod
仓库 - 添加私有库源文件 (添加代码、资源、包等等)
- 修改
.podSpec
文件 - 验证
.podSpec
文件 - 提交代码至远程仓库
- 推送
.podSpec
文件
创建私有的源仓库
1.在远端仓库中,创建一个源索引库PodSpecs
。 (远端仓库可以选择github
、gitlab
、码云
)
2.将远端索引库添加到本地源中(使用终端输入以下命令)
1 | /** |
创建私有的Pod仓库
- 在远端仓库中,创建一个源代码
pod
库。 注意⚠️:这里先不着急关联到本地。 - 选择一个目录下,创建本地
Pod
库工程。执行完成后,命令行会有一系列的问题,按需填写即可;1
2
3
4/**
pod lib create Pod库名
*/
pod lib create RTCComponent命令执行完后会帮我们创建一个Workspace,里面包含了两个Project,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21To get you started we need to ask a few questions, this should only take a minute.
If this is your first time we recommend running through with the guide:
- https://guides.cocoapods.org/making/using-pod-lib-create.html
( hold cmd and double click links to open in a browser. )
What platform do you want to use?? [ iOS / macOS ]
> iOS
What language do you want to use?? [ Swift / ObjC ]
> Swift
Would you like to include a demo application with your library? [ Yes / No ]
> yes
Which testing frameworks will you use? [ Quick / None ]
> none
Would you like to do view based testing? [ Yes / No ]
> noRTCComponent
是我们Pod库的运行Demo工程;Pods
是我们开发库的代码工程。
添加私有库源文件
我们可以在Pods/Development Pods/RTCComponent
目录下导入我们的代码文件或者framework。在这一步就是将我们代码以及资源文件都放置到项目中,导入的文件以及资源目录后面需要在.podSpec
文件中配置, 这里就不过多说明。
修改.podSpec文件
1 | Pod::Spec.new do |s| |
这里如果需要设置请参照 CocoaPods官网文档
验证.podSpec文件
cd到该目录下;执行以下操作:
1 | /** 网络校验 */ |
常用附加处理:
- 查看详细信息,请在命令后加入
--verbose
- 忽略警告,请在命令后加入
--allow-warnings
- 使用本地库,请在命令后加入
--use-libraries
- 检查所有问题,请在命令后加入
--no-clean
- 依赖了私有库,需要添加源,请在命令后加入
--sources=
(**注意:如果依赖了公有库,还需要添加公有库源:https://github.com/CocoaPods/Specs
即--sources=私有库名,https://github.com/CocoaPods/Specs
**)
提交代码至远程仓库
将本地pod
库工程提交推送到远程仓库,打上Tag发布。
1.提交本地仓库,并推送
1 | /** cd Pod工程目录 */ |
2.打上Tag发布
1 | /** 新建tag git tag [tagName] */ |
推送.podSpec文件
检查下本地repo
,如果有,继续下一步,反之,则重新在添加一次(pod repo add [name] [源仓库git地址]
);
1 | pod repo list |
本地仓库检查无误后,开始将创建的Pod
库中的.podspec
文件推送至指定源仓库;
首先,还是cd
到.podspec
文件的目录下,执行以下操作:
1 | /** 推送命令: pod repo push [repoName] [name].podspec */ |
到这里所有流程已经完成;整个过程中的验证过程可能是最容易出问题的,如果验证通过,那么发布就不会有什么问题,所以如果验证没有通过的话,发布也是不会成功的;
文章的最后,我会把制作过程中所遇到的问题一一汇总。(后续如果有遇到的其他问题,也会在这里更新)
问题汇总(Error)
- 问题1: 校验失败解决办法:在
1
2
3
4
5
6
7
8** BUILD FAILED **
The following build commands failed:
CompileSwift normal x86_64
CompileSwiftSources normal i386 com.apple.xcode.tools.swift.compiler
CompileSwift normal i386
CompileSwift normal arm64
(4 failures)
Testing with `xcodebuild`..podspec
文件中加入;参考iOS 指令集架构1
s.pod_target_xcconfig = { 'VALID_ARCHS' => 'x86_64 armv7 arm64' }
- 问题2: 组件中依赖的第三方库中有framework或者.a文件, pod install 报错 解决办法: 在podfile文件中加入以下代码;
1
target has transitive dependencies that include statically linked binaries:
1
2pre_install do |installer| Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
end - 问题3: Xcode setting ENABLE_BITCODE解决办法:将target下
1
You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE)
ENABLE_BITCODE
设置为 NO
参考文档: