之前使用CocoaPods管理过第三方库,前面也有翻译文章介绍过CocoaPods的配置方法,随着项目越来越大,很多公司会使用CocoaPods进行组件化开发,下面利用一个demo介绍一下。
什么是库
先说下什么是库,库分为静态库和动态库两种:
- 1、动态库是在运行时实时部署,而静态库必须在编译时连接到代码。
- 2、动态库加载到内存可以重复使用,而静态库每次import都要引用一次。
- 3、自定义的动态库只能部署在iOS8以上系统。
库有三种格式: - 1、.a:纯代码静态库
- 2、.dylib:纯代码动态库
- 3、.framework:可以包含资源,代码和资源。可以包含静态库和动态库。
创建一个库
1、创建framework:
创建framework
2、随便建一个类
创建一个类
3、在创建的类里面添加两个方法调试用
添加方法
4、在默认创建的类里面导入头文件
导入头文件
5、然后我们看看Build Active Architecture Only 这个值。这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本。而设置为no时,会编译所有的版本。所以,一般debug的时候可以选择设置为yes,release的时候要改为no,以适应不同设备。很多第三方库都是这样设置的。
6、把头文件公开,其他人可以引用到
公开头文件
7、在github上创建一个仓库,把刚才的工程push上去
8、创建podspec文件
创建podspec文件 创建好了
9、配置podspec文件文件,具体教学可以看https://guides.cocoapods.org/syntax/podspec.html和https://segmentfault.com/a/1190000012269307这两个网址
Pod::Spec.new do |spec|
spec.name = 'nickCocoaPodsFrameWork'
spec.version = '0.0.1'
spec.license = 'MIT'
spec.homepage = 'https://github.com/tonymillion/Reachability'
spec.authors = { "nickzc" => "chaokuzc@icloud.com" }
spec.summary = '组件开发实验'
spec.source = { :git => 'https://github.com/nickzc/nickCocoaPodsFrameWork.git', :tag => '0.0.1' }
spec.source_files = 'nickCocoaPodsFrameWork/**/*.{h,m}'
spec.platform = :ios
end
10、验证podspec文件:
pod spec lint xl_test.podspec --allow-warnings
如果报错了就去查询错误原因。
11、新建一个程序,用cocoaPods安装我们刚才写的库:
(1)执行 pod init命令
(2)profile文件添加刚才建的库
# Uncomment the next line to define a global platform for your project
platform :ios, '8.0'
target 'TestCocoaPods' do
pod 'nickCocoaPodsFrameWork', :git => 'https://github.com/nickzc/nickCocoaPodsFrameWork.git'
end
(3)pod install --no-repo-update
pod update --no-repo-update
12、完成。
刚才自己写的framework的地址:https://github.com/nickzc/nickCocoaPodsFrameWork.git
网友评论