博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS之静态库
阅读量:4290 次
发布时间:2019-05-27

本文共 1975 字,大约阅读时间需要 6 分钟。

参考:http://www.cnblogs.com/bomo/p/4760791.html

http://www.jianshu.com/p/a1dc024a8a15

https://www.cnblogs.com/richard-youth/p/4856841.html

在工程中创建静态库:

静态库创建的两种方式:、

创建.framework的静态库:

边创建静态库边调试:

静态库和动态库的存在形式

静态库: .a 和 .framework

动态库: .dylib 和 .framework

静态库和动态库在使用上的区别

静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝 (左图所示)

动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存 (右图所示)

需要注意的是:项目中如果使用了自制的动态库,不能被上传到 AppStore!

 

 

 

 

制作 .a

1、新建项目-> 选择 “Cocoa Touch Static Library”

2、添加库需要包含的源代码,将你工程里的代码添加到打静态库工程里:

4.添加需要暴露的投文件

4.

5.

静态库有四中;真机debug,真机release,模拟器debug,模拟器release;

各自生成的静态库不能同时导入到应用中,如果要同时支持,需要合成后使用;

合成步骤:

 

(真机+模拟器)

如果,你的调试需要不断在真机和模拟器之间切换。那么,制作一个通用的静态库.a文件是一个好想法。

这样,使用该静态库文件就可以在真机和模拟器上调试。

制作过程也是非常简单。动手吧:

建议将Release的真机和模拟器的版本合并!----这样就可以通用了,不管是真机debug或release,还是模拟器debug还是release;

注意Debug和Release的iphonesimulator版本不能合并!只能将真机和模拟器的版本合并!

 

 

 

 

打开终端,执行以下操作:

一、在终端输入:lipo  -create

二、将release-iphonesimulator下的.a拖进终端,输入一个空格;

三、继续将release-iphoneos 下.a 拖进终端,输入空格;

四、继续输入:-output ,打个空格;

五、输入合并后的.a所要放的文件路径(

lipo  -create /Users/wofu/Desktop/SDK/Release-iphoneos/libWofuSDK.a /Users/wofu/Desktop/SDK/Release-iphonesimulator/libWofuSDK.a -output /Users/wofu/Desktop/SDK/WofuSDKLib.a 

注意:最后的/WofuSDKLib.a需要自己加上 ),回车,在相应的文件下即可生成一个.a,该.a即是合并后的.a

 

吧原来单个静态库中的.a文件用合成后的.a文件替换掉,导入APP中,就可以用了,一般需要在APP中修改bit code为NO,Other Link flags添加-ObjC,这样可以保证编译的时候能链接上静态库。

 

 

 

 

 

 

 

 

一些额外的配置:(可以不配置)

 

参考:http://www.jianshu.com/p/11710e7ab661

一种配置方案

了解了每个设置的意思,个人觉得对于一个普通的app来说可以这样配置这些设置:

  • Generate Debug Symbols:DEBUG和RELEASE下均设为YES(和Xcode默认一致);
  • Debug Information Level:DEBUG和RELEASE下均设为Compiler default(和Xcode默认一致);
  • Deployment Postprocessing:DEBUG下设为NO,RELEASE下设为YES,这样RELEASE模式下就可以去除符号缩减app的大小(但是似乎设置为YES后,会牵涉一些和bitcode有关的设置,对于bitcode暂时还不太了解(´・_・`));
  • Strip Linked Product:DEBUG下设为NO,RELEASE下设为YES,用于RELEASE模式下缩减app的大小;
  • Strip Style:DEBUG和RELEASE下均设为All Symbols(和Xcode默认一致);
  • Strip Debug Symbols During Copy:DEBUG下设为NO,RELEASE下设为YES
  • Debug Information Format:DEBUG下设为DWARF,RELEASE下设为DWARF with dSYM File,dSYM文件需要用于符号化crash log(和Xcode默认一致);

 

 

 

 

你可能感兴趣的文章
视音频数据处理入门:FLV封装格式解析
查看>>
最简单的基于FFMPEG的封装格式转换器(无编解码)
查看>>
base64 编码原理
查看>>
单链表是否有环的问题
查看>>
判断两个链表是否相交并找出交点
查看>>
归并排序
查看>>
STL常见问题
查看>>
time_wait和close_wait状态
查看>>
STL中vector、list、deque和map的区别
查看>>
Linux下多线程查看工具(pstree、ps、pstack)
查看>>
PID PPID LWP NLWP
查看>>
查看线程CPU占用情况
查看>>
查看个线程的CPU 内存占用
查看>>
Fiddler 教程
查看>>
apache 设置用户注意事项
查看>>
svn中设置文件夹链接
查看>>
find ./ -name "*.cgi" |xargs -i cp "{}" ./cgi-bin/
查看>>
svn st | awk '{if ( $1 == "?") { print $2}}' | xargs svn add
查看>>
mysql事务处理用法与实例详解
查看>>
利用iptables来配置linux禁止所有端口登陆和开放指定端口
查看>>