使用CocoaPods开发Framework

2018-01-29  本文已影响0人  cheer_harry

前言

1.什么是CocoaPods

当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”,这也许是比较特殊的情况。总之小编的意思就是,手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重新加入到项目中,十分麻烦。如果能有什么工具能解决这些恼人的问题,那将“善莫大焉”。所以,你需要 CocoaPods。

CocoaPods应该是iOS最常用最有名的类库管理工具了,上述两个烦人的问题,通过cocoaPods,只需要一行命令就可以完全解决,当然前提是你必须正确设置它。重要的是,绝大部分有名的开源类库,都支持CocoaPods。所以,作为iOS程序员的我们,掌握CocoaPods的使用是必不可少的基本技能了。

2.CocoaPods的原理

CocoaPods的原理是将所有的依赖库都放到另一个名为Pods的项目中,然后让主项目依赖Pods项目,这样,源码管理工作都从主项目移到了Pods项目中。Pods项目最终会编译成一个名为libPods.a的文件,主项目只需要依赖这个.a文件即可。

3.CocoaPods安装和使用可以参考下面链接

https://www.cnblogs.com/YangFuShun/p/7976811.html

4.framework制作

4.1创建一个workspace项目:

①在桌面创建文件夹ZCBLSDK

②打开Xcode,创建一个workspace,Xcode--->File--->New--->Workspace

③把创建好的workspace放在桌面上文件夹ZCBLSDK中

4.2创建一个project项目:

①打开ZCBLSDK.workspace文件,Xcode--->File--->New--->Project--->iOS--->Cocoa Touch Framework--->Next--->Product Name (ZCBLSDK)--->Next---Add to和Group 选择ZCBLSDK--->Create

4.3创建一个测试Demo项目:

①打开ZCBLSDK.workspace文件,Xcode--->File--->New--->Project--->iOS--->Single View Application--->Next--->Product Name (ZCBLSDKDemo)--->Next---Add to和Group 选择ZCBLSDK--->Create

4.4创建一个测试类:

①在ZCBLSDK.project下创建一个ZCBLSDKTest类,继承于NSObject,打印一条日志信息,在ZCBLSDKTest的.h文件中声明一个方法+(void)test;在ZCBLSDKTest的.m文件中实现+(void)test{NSLog(@"Hello Wold !!!");}

②设置Build Setting参数,将Build Active Architecture only设置为NO

③根据SDK需要支持的ARM处理器配置Architecture

④设置Headers,将要公开的头文件拖到Public下,要隐藏的放到Private或者Project下,隐藏的头文件不能被引用,选择ZCBLSDK--->Build Phases--->Headers

⑤在ZCBLSDK.h中将所有要公开的.h引入#import<ZCBLSDK/ZCBLSDKTest.h>

4.5导出.framwork文件:这里提供两种导出方式,一种手动导出,一种脚本导出

①手动导出:选择ZCBLSDK.project--->Edit Scheme--->Run--->Build Configuration--->Release--->然后分别用真机和模拟器进行编译,编译成功后选择Products下面的ZCBLSDK.framework然后右键Show in Finder,拷贝Release-iphoneos和Release-iphonesimulator文件下放在桌面新建文件夹ZCBLFramework(自己命名)文件下,然后打开终端命令合并库文件:cd ZCBLFramework下面,执行lipo -create Release-iphoneos/ZCBLSDK.framework/ZCBLSDK Release-iphonesimulator/ZCBLSDK.framework/ZCBLSDK -output ZCBLSDK,查看framework支持的架构:lipo -info ZCBLSDK

补充:

arm7: 在最老的支持iOS7的设备上使用

arm7s: 在iPhone5和5C上使用

arm64: 运行于iPhone5S的64位 ARM 处理器 上

i386: 32位模拟器上使用

x86_64: 64为模拟器上使用

注意: 高位兼容地位(32位兼容16位),arm7版本可以在arm7s上运行

需要在对应架构设备上运行,才能生成对应架构的包

②脚本导出:创建一个Aggregare,Xcode--->Editor--->Add Target--->Cross-platform--->Aggregate--->Next--->Product Name(ZCBLSDKAG)--->finish--->嵌入脚本,选中刚创建的Aggregate,然后选中右侧的Build Phases,点击左边的+号,选择New Run Script Phases,把下面的脚本复制进去:

# Sets the target folders and the final framework product.

#如果工程名称和Framework的Target名称不一样的话,要自定义FMKNAME

#例如: FMK_NAME ="MyFramework"

FMK_NAME=${PROJECT_NAME}

# Install dir will be the final output to the framework.

# The following line create it in the root

folder of the current project.

INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework

# Working dir will be deleted after the framework creation.

WRK_DIR=build

DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework

SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework

# -configuration ${CONFIGURATION}

# Clean and Building both architectures.

xcodebuild -configuration"Release"-target"${FMK_NAME}"-sdk iphoneos clean build

xcodebuild -configuration"Release"-target"${FMK_NAME}"-sdk iphonesimulator clean build

# Cleaning the oldest.

if[ -d"${INSTALL_DIR}"]

then

rm -rf"${INSTALL_DIR}"

fi

mkdir -p"${INSTALL_DIR}"

cp -R"${DEVICE_DIR}/""${INSTALL_DIR}/"

# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.

lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" - output"${INSTALL_DIR}/${FMK_NAME}"

rm -r"${WRK_DIR}"

open"${INSTALL_DIR}"

③编译,选中刚创建的Aggregare,command+B,编译通过在finder中找到framework,拷贝出来。

④测试framework,把刚生成的framework添加到ZCBLSDKDemo中,导入头文件#import<ZCBLSDK/ZCBLSDK.h>,使用[ZCBLSDKTest test],发现控制台打印Hello Wold !!!说明framework和ZCBLSDKDemo关联成功,修改framework中ZCBLSDKTest类中test的代码,+(void)test{NSLog(@"Hello Framework !!!");},再次运行发现控制台打印Hello Framework !!!,这时候说明framework已经制作成功。

5.发布framework到CocoaPods

5.1创建GitHub仓库并上传framework到GitHub仓库

5.1.1打开https://github.com,没有账号先注册账号,然后登陆。

5.1.2登陆完成之后点击Start a project,然后根据自己的实际情况配置项目。

5.1.3创建成功后clone远程仓库到本地:

①cd Documents  你希望存放的地址 

②执行git clone  仓库地址

③然后将刚刚生成的ZCBLSDK.framework放在一个命名为Frameworks的文件夹中,然后将Frameworks文件夹放在clone下来的文件夹中。

5.1.4提交到GitHub:

①git add --all

②git commit -m'init framework'

③git push

5.1.5设置Tag:

①git tag 1.0.0

②git push origin --tags

5.2创建Trunk账户

5.2.1注册Trunk账户:

①pod trunk register邮箱地址 ‘用户名’ –verbose,注册命令执行完之后,对应的邮箱地址会收到一封邮件,去邮箱确认注册。

5.2.2查看自己的注册信息:

①pod trunk me

5.3创建.podspec文件

5.3.1.podspec文件的作用是为了让CocoaPods搜索引擎知道该代码的作者、版本号、概要、描述、源代码地址、部署版本、依赖的框架等描述信息。

5.3.2创建.podspec文件:

①cd Documents 从GitHub上面clone下来文件夹目录执行pod spec create ZCBLSDK

②双击打开ZCBLSDK.podspec文件进行编辑

Pod::Spec.new do |s|

#名称

  s.name        = "ZCBLSDK"

#版本号

  s.version      = "1.0.0"

#简介

  s.summary      = "ZCBLSDK is about test framework"

#描述

  s.description  = "ZCBLSDK is about test framework!!!"

#项目主页地址

  s.homepage    = "https://github.com/cheerharry90/TestGitHub.git"

#许可证

  s.license      = { :type => "MIT", :file => "LICENSE" }

#作者

  s.author            = { "cheer_harry" => "cheer_harry@163.com" }

#支持最小系统版本

  s.platform    = :ios, "8.0"

#项目的地址 (注意这里的tag位置,可以自己写也可以直接用s.version,但是与s.version一定要统一)

  s.source = { :git => "https://github.com/cheerharry90/TestGitHub.git", :tag => s.version}

#你的资源路径

  s.resources = "Frameworks/ZCBLSDK.bundle"

#你的SDK路径

  s.vendored_frameworks = "Frameworks/ZCBLSDK.framework"

 # s.dependency "WilddogVideoRoom" // framework中依赖第三方SDK

#  s.dependency "Wilddog/Sync" // framework中依赖第三方SDK

end

注意此处的.podspec文件不需要上传GitHub

5.4上传CocoaPods

5.4.1验证.podspec文件是否合法

pod spec lint ZCBLSDK.podspec

5.4.2提交.podspec文件到Trunk中

pod trunk push ZCBLSDK.podspec

提示successfully published则表示上传成功

注意:验证过程中失败可以添加--verbose查看原因,

①如果s.dependency包含了.a静态库造成错误,虽然这并不影响Pod的使用,但是验证是无法通过的,可以通过 --use-libraries 来让验证通过。

②使用 --use-libraries 虽然不会出现错误(error),但是有时候会带来一些警告(waring),警告同样是无法通过验证的,这时可以用 --allow-warnings 来允许警告。

pod spec lint ZCBLSDK.podspec --verbose --use-libraries --allow-warnings

5.5使用CocoaPods集成ZCBLSDK

5.5.1打开Xcode创建一个测试Demo,在工程目录下面添加podfile文件,双击点开podfile文件添加

platform :ios,'8.0'

target 'TestPodDemo' do

pod 'ZCBLSDK'

end

然后执行pod install

注意如果直接执行pod search ZCBLSDK出现找不到的情况可以采用以下三种方案解决:

①执行pod repo update master

②前往--->前往文件夹--->资源库--->Caches--->CocoaPods--->删除search_index.json文件,然后再执行pod search ZCBLSDK

③在工程目录下面添加podfile文件,双击点开podfile文件添加

platform :ios,'8.0'

target 'TestPodDemo' do

pod 'ZCBLSDK'

end

然后执行pod update

上一篇下一篇

猜你喜欢

热点阅读