本博客是基于网络上的blog修改而成,由于在制作SDK中遇到太多坑,很多细节在互联网上找不到,所以特写此文档。
转载请附上本博客连接http://www.junwen1992.com//admin-index.do#article/article-list
-
开发静态库(Static Library)
创建静态库,有2种方法。
不基于pod手动创建(deprecated)
过程比较繁琐,纯体力活不推荐,大体步骤说下
- 在Xcode中创建一个Cocoa Touch Static Library;
- 创建Podfile文件;
- 执行pod install完成整个项目的搭建;
- 如果需要demo,手动创建示例程序,使用pod添加对私有静态库的依赖,重复执行pod install完成示例项目的搭建。
-
基于pod自动创建 (在本地将工程打成静态库,不需要暴露源码)
只需要输入pod的lib命令即可完成初始项目的搭建,下面详细说明具体步骤,以BZLib作为项目名演示。
1.执行命令pod lib create BZLib。在此期间需要确认下面4个问题。
Would you like to provide a demo application with your library? [ Yes / No ]
yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
Kiwi
Would you like to do view based testing? [ Yes / No ]
No
What is your class prefix?
BZ
第一个问题询问是否提供一个demo项目,通常选择Yes,其他的可以根据需要选择。命令执行完后,就会创建好一个通过cocoapods管理依赖关系的基本类库框架。
2.打开BZLib.podspec文件,修改类库配置信息,结果像这样。
Pod::Spec.new do |s|
s.name = "YBMWebViewJavaScriptSDK"
s.version = "0.1.0"
s.summary = "A short description of YBMWebViewJavaScriptSDK."
s.author = { "junwen.deng" => "junwen.deng@yeepay.com" }
s.source = { :git => '/Users/it-1/Documents/c_workspace/iOS_workspace/YBMWebViewJavaScriptSDK/' } //可以指定本地的工程,但是前提是本地工程中是git管理工程,
s.platform = :ios, '7.0'
s.requires_arc = true
s.source_files = 'Pod/Classes/*.*' //注意这里,这里指的是资源文件,包括.h和.m文件,所以也会包括需要暴露出来的.h文件
s.resource_bundles = {
'YBMWebViewJavaScriptSDK' => ['Pod/Assets/*.png']
}
s.public_header_files = 'Pod/Classes/*.h'//需要暴露出来的文件 当然也可以指定多个文件。如:'Pod/Classes/YPAPI/**/*.h','Pod/Classes/YPBase/YPModel /*.h','Pod/Classes/YPBase/YPUtils/YPUtils.h','Pod/Classes/YPBind/YPViewController/YPCardListController.h','Pod/Classes/YPBase/YPBaseController/YPBaseViewController.h','Pod/Classes/**/*'
# s.frameworks = 'UIKit', 'MapKit'
s.dependency 'AFNetworking', '~>2.6.0' //多个依赖这样写即可
s.dependency 'PureLayout' ,'~>3.0.0'
s.dependency 'MBProgressHUD' , '~>0.9.1'
end
按照默认配置,类库的源文件将位于Pod/Classes文件夹下,资源文件位于Pod/Assets文件夹下,可以修改s.source_files和s.resource_bundles来更换存放目录。s.public_header_files用来指定头文件的搜索位置。
podspec文件的详细说明可以看Podspec Syntax Reference。
3.进入Example文件夹,执行pod install,让demo项目安装依赖项并更新配置。
4. 若修改了本地的SDK的代码,那么必须提交到本地仓库,这样s.source = { :git => '/Users/it-1/Documents/c_workspace/iOS_workspace/YBMWebViewJavaScriptSDK/' } 这个配置才能及时的拿到最新的代码
5.在本地打包类库
需要使用一个cocoapods的插件cocoapods-packager来完成类库的打包。当然也可以手动编译打包,但是过程会相当繁琐。
- 安装打包插件
终端执行以下命令
sudo gem install cocoapods-packager
- 打包
命令很简单,执行
pod package BZLib.podspec --library --force
其中--library指定打包成.a文件,如果不带上将会打包成.framework文件。--force是指强制覆盖。
6.本地工程使用本地类库
这样的写法就可以引入本地类库了
pod "mobpex-iOS" ,:path => '/Users/it-1/Documents/c_workspace/iOS_workspace/SDK/mobpex-iOS'
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于