iOS framwork 开发并支持Cocopods

由于刚到公司接手老项目,项目第三方库的使用管理竟然是手动管理,让我感觉有点惊讶。于是决定抽时间把一些基础的lib打包成framework并可以通过Cocopods来集成。方便别人使用,同时也让项目的整体结构看起来清晰一点。

1、framework的开发

我采用的Workspace来联调测试framework。
1、首先创建一个Workspace,名字随便取


屏幕快照 2017-09-02 上午10.21.10.png

2、创建framework开发工程,并加入刚刚我们创建的workspace中

QQ20170902-102415.png

QQ20170902-102705.png

3、创建测试工程,并加入我们创建的workspace中,这里和上面的步骤差不多,就不截图了。
下图为创建好后的目录结构

QQ20170902-103046.png

4、关联调试,
在framework中添加一个类,并写个类方法,用来测试调用

+ (void)initPythonInterpreter{

    NSLog(@"我需要初始化python执行的脚本环境");
}

在测试工程中,添加framework

QQ20170902-115128.png

设置Header Search Paths,设置其路径为${SRCROOT}/../YXPythonInterpreter
注意:这个要根据自己工程的路径来设置
现在运行测试工程就能调试SDK 了。

2、framework的打包

可以用手动或者脚本进行打包,我这里因为要支持Cocopods,所有选择Cocopods插件打包
1、执行下面的命令

pod lib create YXPythonInterpreter

2、编写podspec文件

Pod::Spec.new do |s|
  s.name             = 'YXPythonInterpreter'
  s.version          = '0.1.0'
  s.summary          = 'A short description of YXPythonInterpreter.'

# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it? What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!

  s.description      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

  s.homepage         = 'https://github.com/full-of-fire/YXPythonInterpreter'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'full-of-fire' => '591730822@qq.com' }
  s.source           = { :git => '/Users/谭德林/Desktop/Framework开发/YXPythonInterpreter/YXPythonInterpreter_Release/YXPythonInterpreter', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '8.0'

  s.source_files = 'YXPythonInterpreter/Classes/**/*'

  s.public_header_files = 'YXPythonInterpreter/Classes/**/*.h'
  s.ios.vendored_frameworks = 'YXPythonInterpreter/*.framework'
  s.libraries = 'xml2', 'z','bz2','sqlite3','c++','stdc++'
  s.resource = 'YXPythonInterpreter/PythonEnvironment.bundle'

  # s.resource_bundles = {
  #   'YXPythonInterpreter' => ['YXPythonInterpreter/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.dependency 'AFNetworking', '~> 2.3'
end

3、复制文件到对应目录
4、验证podspec文件

pod lib lint YXPythonInterpreter.podspec --allow-warnings --use-libraries

如果验证通过YXPythonInterpreter passed validation.

到测试工程中测试一下

cd Example/
pod install

5、安装cocoapods-packager插件

 sudo gem install cocoapods-packager

6、打包
6.1,验证
开发完成静态类库之后,需要运行pod lib lint验证一下类库是否符合pod的要求(cd到podspec文件所在目录下),如果确认无误可略过。

 pod lib lint XXXLIB.podspec -only-errors --verbose --allow-warnings  --use-libraries

6.2,更新pod(cd到Podfile文件所在目录下)

 pod update --verbose --no-repo-update 或者pod install

6.3,提交,更新版本号(cd到podspec文件所在目录下)

git add .
git commit -a -m'v请换成版本号'
 git tag -a 版本号 -m'v版本号'

6.4,将podspec文件中s.version的版本号替换为所需要的版本号**(第三步git tag的版本)

修改podspec文件中s.version  = "修改为自己需要打包的版本"

6.5,打包(cd到podspec所在文件目录下)

# pod package XXXLIB.podspec --library --force     打包成.a文件。--force是指强制覆盖

# pod package XXXLIB.podspec --force               打包成.framework文件

7、发布cocopods
7.1、在git上创建一个远程仓库,
7.2、.podspec文件的编写,
7.3、关联本地和远程仓库

git add .
git commit -m 'init'
git remote add origin xxx(git 地址)
git push origin master
git tag '1.0.0'
git push --tags

7.4、验证.podspec

pod spec lint xxxxx.podspec

7.5、发布

pod trunk push xxx.podspec
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容

  • 一、创建的github仓库原文地址 1 进入Github网站www.github.com登陆自己的账号后 2 建立...
    freesan44阅读 3,923评论 2 12
  • 项目组件化、平台化是技术公司的共同目标,越来越多的技术公司推崇使用pod管理第三方库以及私有组件,一方面使项目架构...
    swu_luo阅读 21,642评论 0 39
  • (原文:How to Create a Framework for iOS作者:Sam Davies 译者:Mr_...
    Yaanco阅读 2,327评论 4 5
  • Ruby 安装 要安装cocospods 首先需要安装ruby,可以先安装xcode,再安装macport ,最后...
    山天大畜阅读 1,849评论 0 1
  • 我有一个秘密 但是我不想告诉风 怕它吹散你尘封的记忆 我有一个秘密 但是我不想告诉雨 怕它打湿你眼角的笑意 我有一...
    xiaoxiao小刀阅读 190评论 1 0