基于pod自动创建:开发静态库(Static Library)

参考:http://blog.csdn.net/youtk21ai/article/details/50750300

http://www.cnblogs.com/brycezhang/p/4117180.html

http://www.cocoachina.com/ios/20150228/11206.html

1.执行命令pod lib create TrapezoidButton。在此期间需要确认下面5个问题。

What language do you want to use?? [ Swift / ObjC ]

objc

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.打开TrapezoidButton.podspec文件,修改类库配置信息,结果像这样。

Pod::Spec.new do |s|

s.name             = ‘TrapezoidButton‘

s.version          = ‘0.1.0‘

s.summary          = ‘自定义梯形button‘

# 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

自定义梯形按钮可以点击,点击时改变颜色

DESC

s.homepage         = ‘https://github.com/xilanglang/TrapezoidButton‘

# s.screenshots     = ‘www.example.com/screenshots_1‘, ‘www.example.com/screenshots_2‘

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

s.author           = { ‘caoyanan‘ => ‘[email protected]‘ }

s.source           = { :git => ‘https://github.com/xilanglang/TrapezoidButton.git‘, :tag => s.version }

# s.social_media_url = ‘https://twitter.com/<TWITTER_USERNAME>‘

s.ios.deployment_target = ‘7.0‘

s.source_files = ‘TrapezoidButton/Classes/**/*‘

# s.resource_bundles = {

#   ‘TrapezoidButton‘ => [‘TrapezoidButton/Assets/*.png‘]

# }

# s.public_header_files = ‘Pod/Classes/**/*.h‘

# s.frameworks = ‘UIKit‘, ‘MapKit‘

# s.dependency ‘AFNetworking‘, ‘~> 2.3‘

end

按照默认配置,类库的源文件将位于Pod/Classes文件夹下,资源文件位于Pod/Assets文件夹下,可以修改s.source_files和s.resource_bundles来更换存放目录。s.public_header_files用来指定头文件的搜索位置。

s.frameworks和s.libraries指定依赖的SDK中的framework和类库,需要注意,依赖项不仅要包含你自己类库的依赖,还要包括所有第三方类库的依赖,只有这样当你的类库打包成.a或.framework时才能让其他项目正常使用

Example中用到的源文件放到Pod/Classes文件夹下

3.进入Example文件夹,执行pod install,让demo项目安装依赖项并更新配置。

4.添加代码。因为是示例,只简单显示两个梯形按钮。

运行Pod install,让demo程序加载新建的类。也许你已经发现了,只要新增加类/资源文件或依赖的三方库都需要重新运行Pod install来应用更新

demo项目中调用测试。

#import "LeftTrapezoidButton.h"

#import "RightTrapezoidButton.h"

#define Bounds_w(val) ((val).bounds.size.width)

#define Bounds_h(val) ((val).bounds.size.height)

@interface XinViewController ()

{

LeftTrapezoidButton *leftTrapezoidButton;

RightTrapezoidButton *rightTrapezoidButton;

}

@end

@implementation XinViewController

- (void)viewDidLoad

{

[super viewDidLoad];

self.view.backgroundColor=[UIColor yellowColor];

leftTrapezoidButton=[[LeftTrapezoidButton alloc] initWithFrame:CGRectMake(Bounds_w(self.view)/2-70, (Bounds_h(self.view)-26)/2, 86, 26)];

[leftTrapezoidButton setTitle:@"球队约战" forState:UIControlStateNormal];

[leftTrapezoidButton setTitleEdgeInsets:UIEdgeInsetsMake(0, 15, 0, 30)];

[leftTrapezoidButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

[leftTrapezoidButton setTitleColor:[UIColor redColor] forState:UIControlStateSelected];

leftTrapezoidButton.titleLabel.font=[UIFont systemFontOfSize:10];

[leftTrapezoidButton addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];

leftTrapezoidButton.tag=202;

[self.view addSubview:leftTrapezoidButton];

leftTrapezoidButton.selected=YES;

rightTrapezoidButton=[[RightTrapezoidButton alloc] initWithFrame:CGRectMake(Bounds_w(self.view)/2-4, (Bounds_h(self.view)-26)/2, 86, 26)];

[rightTrapezoidButton setTitle:@"野球娱乐" forState:UIControlStateNormal];

[rightTrapezoidButton setTitleEdgeInsets:UIEdgeInsetsMake(0, 30, 0, 15)];

[rightTrapezoidButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

[rightTrapezoidButton setTitleColor:[UIColor redColor] forState:UIControlStateSelected];

rightTrapezoidButton.titleLabel.font=[UIFont systemFontOfSize:10];

[rightTrapezoidButton addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];

rightTrapezoidButton.tag=203;

[self.view addSubview:rightTrapezoidButton];

}

- (void)btnClicked:(UIButton *)button{

if(button==leftTrapezoidButton){

leftTrapezoidButton.selected=YES;

rightTrapezoidButton.selected=NO;

}else if(button==rightTrapezoidButton){

leftTrapezoidButton.selected=NO;

rightTrapezoidButton.selected=YES;

}

}

@end

4.提交本地代码库到git服务器

通过Cocoapods创建出来的目录本身就在本地的Git管理下,我们需要做的就是给它添加远端仓库,同样去GitHub或其他的Git服务提供商那里创建一个私有的仓库,拿到SSH地址,然后cd到TrapezoidButton目录

$ git add .

$ git commit -s -m "Initial Commit of Library"

$ git remote add origin [email protected]:wtlucky/podTestLibrary.git           #添加远端仓库

$ git push origin master     #提交到远端仓库

5.TrapezoidButton.podspec 上传到Cocoapods官方的仓库里去

(1.)在开始提交项目到Cocoapods之前,小伙伴们有没有想过在提交源代码前怎么标示你的源代码是属于你的,我们总要一个类似账号的东东吧。当然需要,那么我们先来搞一个账号吧:

pod trunk register [email protected] ‘Pluto Y‘ --description=‘My own computer‘

(2.)需要验证你的代码是否有错以及Podspec文件,那么这个时候下面这条命令就起到非常大的作用了:

pod lib lint Name.podspec

(3)验证成功,上传

pod trunk push 项目名.podspec

时间: 2024-10-09 05:28:07

基于pod自动创建:开发静态库(Static Library)的相关文章

iOS 元件组件-创建静态库static library

概述 在项目开发的过程中,经常使用静态库文件.例如两个公司之间业务交流,不可能把源代码都发送给另一个公司,这时候将私密内容打包成静态库,别人只能调用接口,而不能知道其中实现的细节. 库是一些没有main函数的程序代码集合.除了静态库,还有动态链接库,他们之间的区别是:静态库可以编译到我们的执行代码中,应用程序可以在没有静态库的环境中运行:动态库不能编译到我们的执行代码中,应用程序必须在有链接库文件的环境下运行.另外,动态库在AppStore里,很有可能被拒绝,上架不了. 因而,一般情况下,我们都

IOS三步生成静态库(static library )

一.创建 (创建一个静态库项目) 二.编译 (command+B) 三.合并lib lipo -create 真机.a 模拟器.a -output /Users/my/Desktop/lib/lib.a

ios开发静态库生成

首先简单说下哈: 库就是程序代码的集合,是共享代码的一种方式 分为开源库(sd,mi,afn)和闭源库(看不到具体实现的) 闭源库分为静态库和动态库 静态库: .a 和 .framework 动态库: .dylib 和 .framework 静态库和动态库在使用上的区别 静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存 注意啦: 使用自己制作的动态库无法上传a

ios 静态库(static libarary) 的使用

(账号找到了,从新博客迁移回来) 静态库:是一种在多个application中共享使用同一份代码的机制. 先建一个single ViewController的Project,然后在左边侧栏下右建新建 NewFile ->Framwork&Libarary->StaticLibaray 建成后的结果如下: 选择StaticLibaray,Cmd + B build,这时Products中的 libStaticLinaray.a会变为黑色,说明编译成功了. 切换到Project,添加Lib

ios开发 静态库制作

IOS程序是由Objective-c语言构成,而是Objective-c语言中每一个类又分成 .h .m 文件.静态库可以将这些程序的类封装成一个.a文件,第三方应用程序只需要拿到这个.a文件和代码对应的.h文件即可使用静态库中封装的方法.总的来说IOS静态库适合去制作第三方提供的SDK,废话不多说了我们直接进正题. 制作静态库 代码如下 1 #import <Foundation/Foundation.h> 2 3 @interface BookModelLib : NSObject 4 {

创建cocos2d-x静态库为Xcode编译提速

把以前写的一个帖子内容转到这里来,写得比较乱,有时间再整理整理. cocos2d-x项目编译太慢太长一直很让人诟病,特别是Xcode中的archive,要是再出几次错,就忒折磨人了,小小研究了下把基础库生成静态库嵌入到工程里面的方法,提高cocos2d-x项目编译速度,希望对一些人有帮助吧. 把cocos2d-x的cocos2d_libs工程从xcode游戏工程中删掉,用xcode单独打开ccocos2d_libs工程,其路径为YourApp/cocos2d/build/cocos2d_libs

静态库和共享库制作

 1静态库和共享库 *本节就如何创建和使用程序库进行论述.所谓"程序库",简单说,就是包含了数据 和执行码的文件.其不能单独执行,可以作为其它执行程序的一部分来完成某些功能.库的 存在,可以使得程序模块化,可以加快程序的再编译,可以实现代码重用,可以使得程序便 于升级.程序库可分静态库(static library)和共享库(shared object). A:静态库 是在可执行程序运行前就已经加入到执行码中,成为执行程序的一部分:共享库,是在 执行程序启动时加载到执行程序中,可以

iOS-工程和工作空间、静态库和框架之间的关系

使用Xcode创建的工程Project是单独分开的,如果想要几个工程同时存在,可以通过创建工作空间Workspace.工作空间是对各工程的集合,工程文件名的后缀为.xcodeproj,工作空间文件名的后缀为.xcworkspace. 静态链接库 在公司中有些核心代码,我们不能提供源代码,而又需要复用给其它公司.团队等使用,这时候就需要将此部分的代码封装成静态链接库. 库是没有main函数程序代码的集合,除了静态链接库还有动态链接库,它们的区别是静态链接库可以编译到执行代码中,应用程序可以在没有静

Windows核心编程---动态链接库(XX.dll)与静态库(XX.lib)

最近细读了Windows核心编程的内存管理与动态链接库部分,虽然有些人对Windows未来说三道四,但不得不承认微软windows系统的强大功能,以及其深邃的架构设计思想,令人钦佩.通过这次阅读对库文件有了更深刻的认识,总结于此! 动态链接库(Dynamic Linked Library): Windows为应用程序提供了丰富的函数调用,这些函数调用都包含在动态链接库中.其中有3个最重要的三个库为:Kernel32.dll.Use32.dll.GDI32.dll,介绍如下: Kernel32.d