ios中静态库的创建和使用、制作通用静态库(Cocoa Touch Static Library)

创建静态库可能出于以下几个理由:

1.你想将工具类代码或者第三方插件快捷的分享给其他人而无需拷贝大量文件。
2.你想让一些通用代码处于自己的掌控之下,以便于修复和升级。
3.你想将库共享给其他人,但不想让他们看到你的源代码。

Xcode6创建静态库详解(Cocoa Touch Static Library)

一。创建静态库文件

打开Xcode, 选择File ----> New ---> Project。 新建工程。

选择iOS ----> Framework & Library ---> Cocoa Touch Static Library。

点击Next。创建工程

工程目录:

在头文件StaticTest1.h中声明方法

#import <Foundation/Foundation.h>

@interface StaticTest1 : NSObject

-(void)testStaticLib;

@end

  

在StaticTest1.m中实现方法

#import "StaticTest1.h"

@implementation StaticTest1

-(void)testStaticLib
{
    NSLog(@"This is a static library test");
}

@end

  

二。创建通用静态库

通过xcode编译出的静态库.a文件因为支持的cpu架构不同而分为iOS Device真机(armv7 arm64), iPhone5(i386),iPhone5s(x86_64)等版本,各个版本的.a文件不能混用,为了解决这个问题需要制作通用的静态库文件

依次使用iOS Device -> iPhone5 ->iPhone5s在Products目录下生成libStaticTest1.a文件(文件名从红色变为黑色既为编译成功),必须先编译iOS Device的.a文件,不然可能编译不通过

通过右键.a文件->show in finder 找到文件libStaticTest1.a,依次重命名libStaticTest1s.a,libStaticTest15.a,libStaticTest15s.a, 名字可以随意

使用mac下的终端命令行工具执行合并语句

lipo -create /Users/outeki/Desktop/libStaticTest1s.a /Users/outeki/Desktop/libStaticTest15s.a /Users/outeki/Desktop/libStaticTest15.a -output /Users/outeki/Desktop/test.a
文件路径可以随意放置,我将文件都放在了桌面上方便写合并语句,注意三个文件路径都用空格分开,/Users/outeki/Desktop/test.a既为生成的通用静态库文件

如果你不知道每个.a文件支持的系统,可以通过lipo -info命令行来查看具体信息

lipo -info /Users/outeki/Desktop/libStaticTest1s.a

  

 如果需要将通用静态库分离成各个版本的静态库,可以参考文章 http://www.cnblogs.com/wengzilin/p/3800856.html

三。使用静态库

新建一个ios项目,并创建lib文件夹,将头文件StaticTest1.h和test.a文件加入项目

在ViewController.m中import头文件,即可使用头文件中定义的方法了

#import "ViewController.h"
#import "StaticTest1.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    StaticTest1 *test = [[StaticTest1 alloc] init];
    [test testStaticLib];

}

@end

  

测试输出:

四.知识补充

到此静态库的介绍基本结束,如果你想自定义静态库的头文件,可以在静态库工程中新建一个新的.h头文件,用其替换掉copy file中配置的默认.h头文件

添加Public.h头文件

在public.h中引入可以公开的头文件

#import "StaticTest1.h"

  

在配置文件Build Phases ->Copy File中修改公共接口文件 (Xcode5以前是Copy Header)

Command+R执行工程即可得到对应的.h和.a文件

如何使用workspace管理静态库源码和原生app代码将在下一篇讨论

时间: 2024-12-22 09:51:25

ios中静态库的创建和使用、制作通用静态库(Cocoa Touch Static Library)的相关文章

使用Xcode 5创建Cocoa Touch Static Library(静态库)

转自:http://blog.csdn.net/jymn_chen/article/details/21036035 首先科普一下静态库的相关知识: 程序编译一般需经预处理.编译.汇编和链接几个步骤.对于我们项目中的一些公共代码,如果想要对其进行复用,可以把这些代码编译成一个静态库文件.在链接步骤中,链接器会从库文件中取得对应的代码并生成可执行文件.静态库的执行文件中包含了库中的完整代码,但是多次使用会产生多份冗余拷贝. 静态库和动态库的区别在于静态库在链接阶段被复制,与程序的运行阶段无关:动态

iOS在Cocoa Touch Static Library使用CocoaPods

1.在XCode中新建静态库工程:DDLogLib. 2.添加对外暴露接口的头文件DDLogLibHeader.h 3.命令行进入DDLogLib目录,运行pod init,并修改Podfile 4.运行pod install,并打开DDLogLib.xcworkspace. 5.运行pod spec create DDLogLib,创建DDLogLib.podspec文件,并编辑. #  Be sure to run `pod spec lint DDLogLib.podspec' to en

xcode 4 制作通用静态库

参考:http://blog.csdn.net/pjk1129/article/details/7255163 最近在做Apple的IOS开发,有开发静态库的需求,本身IOS的开发,只允许静态库或者Framework. 我这个文档的静态库的开发是基于Xcode4.2和iOS SDK5.0编写的.Xcode4跟之前的Xcode3还是有不少的差别的.下面就简单写一个静态库和一个调用静态库的例子.静态库的编写:1.静态库工程的建立: Xcode New一个新的project,选择IOS下面的Frame

6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作

 一  QT的内存管理 1  QT中的内存管理是QObject来管理的 2  QT中的内存管理没有cocos2dx中的引用计数 3  组件可以指定父对象 QTimer *timer = QTimer(this);   //这里的this实际上强制转换成为了QObject了. 4  每一个对象都有一个deleteLater()方法, QLineEdit* edit = new QLineEdit(this); delete edit;   //这里的delete马上调用析构函数对内存进行释放

iOS 合并.a文件,制作通用静态库

lipo  -create  SQY/iOS/iphoneos/libGamePlusAPI.a  SQY/iOS/iphonesimulator/libGamePlusAPI.a  - output  SQY/iOS/libGamePus.a 其中SQY/iOS/iphoneos/libGamePlusAPI.a //为真机库. SQY/iOS/iphonesimulator/libGamePlusAPI.a //为模拟器库 -output SQY/iOS/libGamePus.a //为两个

IOS中使用NSAttributedString灵活创建标签

灵活使用NSAttributedString可以更轻松的创建出内容复杂的标签.需要注意一点:如果一个label设置了这个属性,那它其他的设置都将失效. 首先,我们初始化一个NSMutableAttributedString对象. //通过字符串初始化 //- (instancetype)initWithString:(NSString *)str; //通过字符串和属性字典直接初始化 //- (instancetype)initWithString:(NSString *)str attribu

在iOS中创建静态库

如果你作为iOS开发者已经有一段时间,可能会有一套属于自己的类和工具函数,它们在你的大多数项目中被重用. 重用代码的最简单方法是简单的 拷贝/粘贴 源文件.然而,这种方法很快就会成为维护时的噩梦.因为每个app都有自己的一份代码副本,你很难在修复bug或者升级时保证所有副本的同步. 这就是静态库要拯救你的.一个静态库是若干个类,函数,定义和资源的包装,你可以将其打包并很容易的在项目之间共享. 在本教程中,你将用两种方法亲手创建你自己的通用静态库. 为了获得最佳效果,你应该熟悉Objective-

iOS中创建动态库及调用方法

去年因需要用到动态库,自己就找了好多一些 资料,最终找到了一套方法,怎么创建与使用动态库,记录一下: Xcode提供了在iOS工程中创建静态库的功能,和在MAC上创建动态库和静态库的功能. 但是没有提供在iOS工程中创建动态库的功能(苹果官方不允许程序中存在动态库链接,这样的程序会被AppStore拒),如下图:  由于苹果不支持自己创建iOS动态库,所以要想创建动态库首先要修改Xcode的配置文件使其支持具备创建iOS 动态库的功能, 经过调研和查询网上的一些资料,并经过自己测试成功,以下是修

iOS XCode7制作.Framework动态库和.a静态库的总结

一.开发SDK时的支持情况: OC语言制作动态库时,支持iOS8+:OC语言制作静态库,支持iOS7+. Swift语言制作动态库时,支持iOS8+;Swift不支持静态库. 对于SDK来说,支持情况非常重要.像我就是一开始就被坑了,我使用Swift开发动态库的方式提供SDK,所以只能支持到iOS8+.但这意味着所有使用我的SDK的客户的APP都必须到iOS8+,这就坑爹了. 所以假如需要支持iOS7的话,只有使用OC语言开发.a静态库的一条路. 二.开发动态库的简易过程: 开发动态库时,只要通