文章目录
CocoaPods管理第三方库
1、pod init
自动生成Podfile:
2、vim Podfile
,取消platform的注释,注释use_frameworks!使用静态库,添加pod 'AFNetworking', '~> 3.2.1'
:
- 2.1、不使用use_frameworks!则在Pods项目(前面为蓝色图标)的Products下生成.a文件;使用use_frameworks!则生成.framework文件。
3、执行pod install
生成CBD.xcworkspace文件。
CocoaPods创建自己的库
创建复合项目和Framework
1、创建普通的项目:
2、点击TARGETS左下角的“+”号,添加一个Target,选择“iOS”->“Framework & Library”->“Framework”。
创建Framework之后,左侧导航面板会多一个“RCUtility”目录,中间面板TARGETS也会多一个“RCUtility”。
TARGETS选中RCUtility,Build Settings中Mach-O Type为“Dynamic Library”(这里选择动态库,并不影响其他项目比如CBD使用这个库时选择静态链接还是动态链接,这里的设置只影响本项目的编译设置)(Framework是一种打包方式,包含.a二进制文件+bundle资源文件+.h头文件,不一定是动态链接库,也可以使用静态链接的方式。)。
3、Framework的设置:
- 设置前缀:选中左侧“Project Navigator”面板中的“RCUtilityDemo”项目(左侧图标是蓝色而不是黄色),在打开的右侧“File Inspector”面板下的“Project Document”->“Class Prefix”填入前缀如RC,这样新建的class都自动以RC开头命名。
- 设置scheme:Stop按钮右侧(左侧是Build and then Run按钮)选中“RCUtility”(不是RCUtilityDemo),再次点击选择“Edit Scheme…”,在弹出的面板中选中"Run",在左侧“Info”->“Build Configuration”改为“Release”。
- 设置Build Settings:TARGETS选中RCUtility,Build Settings下的“Build Active Architchture Only”->“Release”设置为NO(Debug可不修改)。
4、Framework中创建类 和 主项目中使用Framework:
-
4.1、导航面板中选中“RCUtility”目录(注意不是RCUtilityDemo目录),新建一个类,将这个类.h文件加到“Build Phases”->“Headers”->“Public”(默认在Project中,右键该文件选择“Move to Public Group”)。
-
4.2、主项目中使用Framework:
- 4.2.1、TARGETS->“RCUtilityDemo”->“Link Binary With Libraries”加入RCUtility.framework(默认已经加入)。
- 4.2.2、在主项目的类.m文件中import自己创建的Framework的某个类的头文件.h,即可使用这个类的方法。
- 4.2.1、TARGETS->“RCUtilityDemo”->“Link Binary With Libraries”加入RCUtility.framework(默认已经加入)。
GitHub托管代码
1、本地仓库:
- 1.1、在终端cd到RCUtilityDemo目录(里面包含RCUtility、RCUtilityDemo和RCUtilityDemo.xcodeproj),执行
git init
。 - 1.2、创建.gitignore(在Sourcetree中添加本地仓库,可以看到哪些文件被修改,哪些文件应该加到.gitignore),然后commit全部文件。
2、远程仓库:
- 2.1、GitHub上新建仓库,名字填RCUtility,选择Public,不勾选README这些文件,创建一个空白仓库。
- 2.2、关联远程仓库:
git remote add origin https://github.com/rccrx/RCUtility.git
,git push -u origin master
。
发布到CocoaPods
1、cd到RCUtilityDemo目录,执行pod spec create RCUtility
创建文件RCUtility.podspec(生成的文件的注释里面会有各个参数的说明,虽然最后需要删除这些注释)。
2、修改文件RCUtility.podspec如下:
Pod::Spec.new do |spec|
spec.name = "RCUtility"
spec.version = "0.0.1"
spec.summary = "A short description of RCUtility."
spec.homepage = "https://github.com/rccrx/RCUtility"
spec.license = "MIT"
spec.author = {
"rccrx" => "rccrx@qq.com" }
spec.platform = :ios