Xcode5 制作静态库

方法一:创建新工程

1、 新建一个工程,选择 ios 下 Framework & Library中的Cocoa Touch Static Library ,将工程命名为TestLibrary



2、可以看到,新建的Target里面同时具有TestLibrary.h、 TestLibrary.m 两个文件,可以直接在这里添加方法,也可以直接删除,然后换成自己需要打成静态库的.h、.m文件

3、编译前准备这里分releasedebug版本,需要注意一下。我们的应用运行分为在模拟器上运行和在真机上运行,所以这里一定要注意版本一致,这里我做测试,所以就统一用debug



4、编译   选择设备为ios Deveice 编译一下,你会看到Products下libTestLibrary.a变为黑色了,这说明设备的静态文件已经生成,选择设备为iPhone Retina(3.5-inch) 再次编译一下,生成真机的静态文件


5、合成,将真机和设备的静态文件合成 在libTestLibrary.a上右键点击,选Show in Finder ,这时在Debug-iphoneos和Debug-iphonesimulator 文件夹下各有一个 libTestLibrary.a 文件,打开终端 输入

lipo -create /Users/macmini/Library/Developer/Xcode/DerivedData/TestLibrary-giuqdrzdcnfevqgbgvbbmgpkkusz/Build/Products/Debug-iphoneos/libTestLibrary.a /Users/macmini/Library/Developer/Xcode/DerivedData/TestLibrary-giuqdrzdcnfevqgbgvbbmgpkkusz/Build/Products/Debug-iphonesimulator/libTestLibrary.a -output /Users/macmini/Desktop/TestLib.a 并回车,这时我们就在桌面上生成了合成后的.a文件

其中/Users/macmini/Library/Developer/Xcode/DerivedData/TestLibrary-giuqdrzdcnfevqgbgvbbmgpkkusz/Build/Products/Debug-iphoneos/libTestLibrary.a 可以看出是真机.a文件的路径,(可直接将文件拖入终端即输入文件的路径了)/Users/macmini/Library/Developer/Xcode/DerivedData/TestLibrary-giuqdrzdcnfevqgbgvbbmgpkkusz/Build/Products/Debug-iphonesimulator/libTestLibrary.a,是模拟器.a文件的路径,/Users/macmini/Desktop/TestLib.a是合成新文件的路径,这里我把它放在了桌面

可以输入命令测试下是否成功  输入: -info /Users/macmini/Desktop/TestLib.a 

反馈:Architectures in the fat file: /Users/macmini/Desktop/TestLib.a are: armv7 armv7s i386 arm64 

有了armv7,i386两个就表示模拟器和真机都支持 其中armv7为真机架构 i386为模拟器



6、使用 将TestLibrary.h和刚生成的TestLib.a文件加进要使用的工程里,导入TestLibrary.h头文件后,就可以直接调用TestLibrary里写的方法了,在这里就完成了。

方法2:使用已有工程

1、选择File ---> New ---> Target  选择 ios 下 Framework & Library中的Cocoa Touch Static Library 



2、TestLibrary.h、 TestLibrary.m 两个文件可以直接删掉,把你需要打成静态库的东西复制一份,放好,然后把你工程里的那一份.h .m 删除,然后把你刚才复制的那一份拖进工程,选择Targets里面的工程名和静态库名称,然后添加上,剩下的步骤和方法1一样




注意:1、一定要分清releasedebug版本,你的项目是debug就生成并导入debug版的.a

2、如果你在静态库工程中使用了category,那么你可能会碰到链接问题,解决的办法就是需要同时在生成静态库的工程和使用静态库的工程中使用“-all_load”编译选项,即在对应target"Build Settings"中的“Other Linker Flags”选项添加“-all_load”。 使用静态库的工程中是一定要加该编译选项的!!至于生成静态库的工程中加不加没有试过,不过建议还是加上该编译选项

3、为了使自己的静态库尽可能多的支持IOS的系统版本,应该在"IOS Deployment Target"这个选项中选择自己所需的IOS版本

4、    自动拷贝头文件    在工程对应的target“Build Phases”下添加“Copy Headers”的选项。该选项默认是没有的,添加方法是点击下方的“Add Build Phase”按钮后选择后即可添加。该选项下有3个子选项,分别是Public,Private,Project。通过点击下方的加号,可以将工程中的头文件添加到“Project”中,在其中的对应头文件点击右键,选择“Move to Public Group”,当头文件移到“Pulic”后,编译工程以后,在工程编译后.a文件所在的路径下,会同时出现一个"usr/local/include"的文件夹,其中的头文件就是public group中的头文件。这时只需将.a文件和这个路径下的头文件拷贝到所需工程文件即可

5、静态库中不能包含资源文件(如文本、图片等),即使我们把资源文件拷贝到静态库工程中,但实际上是不会添加到target的,也就是说编译结果中并不包含这些资源,因此如果此时调用静态库,所有的资源都是缺失的。这时我们可以把资源建立成单独的束(Bundle)。新建工程 “OS X  -> Framework & Library -> Bundle ”,命名为:LibraryBundle然后把资源文件拷进Resouces中去。编译,就生成LibraryBundle.bundle文件。选择 Products 下LibraryBundle.bundle右击选Show in Finder,就找到了生成的bundle文件,使用时将其拖入即可



//bundle文件调用

#define MYBUNDLE_NAME @ "LibraryBundle.bundle"

#define MYBUNDLE_PATH [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: MYBUNDLE_NAME]

#define MYBUNDLE [NSBundle bundleWithPath: MYBUNDLE_PATH]

//函数getMyBundlePath可以取得束LibraryBundle中具体资源的绝对文件路径

NSString* getMyBundlePath( NSString * filename)

{

    NSBundle * libBundle = MYBUNDLE;

    if (libBundle && filename){

        NSString * s=[[libBundleresourcePath ]stringByAppendingPathComponent : filename];

        NSLog ( @"%@" ,s);

        return s;

    }

    return nil ;

}




weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值