• iOS中静态库的制作——使用创建静态库项目的方式创建静态库


    最近公司要求写SDK,我就想把它弄成静态库的方式

    我的理解:所谓静态库,就是把所有的.m文件打包成一个.a文件,这样使分享代码的时候更加简洁,重要的是别人也不会看到你.m文件中的傻B代码了

    环境是Xcode6.2 iOS8.2

    首先,创建一个静态库项目

    删掉Xcode自动创建的同名文件,然后导入你需要做成静态库的文件

    在这里我导入一个简单的输出字符串的文件

    然后选择运行的设备进行编译,这里我有不理解的地方:在Xcode6.2中,当我首先选择模拟器,然后编译文件的时候,.a文件依然是红色的,说明静态库没有生成,但是当我把运行设备改成iOS Device之后,.a文件就变成黑色了,这是为什么?

    编译结果

    在.a文件上右键,选择在文件夹中显示

    可以看到文件夹中的.a文件

    这是在用真机调试的时候需要导入的静态库,这时候神奇的事情又来了,在Debug-iPhoneos文件夹的下面有一个Debug-iphonesimulator文件夹,打开之后,里面也有一个静态库文件

    这里的.a文件是用模拟器调试的时候用的

    这连个.a文件用于不同的调试设备,当你用错的时候,Xcode会报错

    调试的时候,两个静态库切换会很麻烦,而且给别人使用也不方便,这里可以把两个.a文件打包成一个.a文件

    打包方式:

    这是截取别人的博客,我自己的路径太长,博客地址,http://www.cnblogs.com/qingjoin/archive/2013/01/31/2886985.html

    总之,生成的.a文件对于模拟器和真机都是适用的

    然后,这里有一个查看.a文件支持模拟器还是真机的方法:

    在终端输入

    这里的x86_64指该静态库支持模拟器,如果是arm7或arm8,那么该静态库就是支持真机调试的

    我们用终端合成的.a是会同时显示出来x86_64,arm7和arm8的

    以上说的都是在Xcode6.2环境下,生成的调试用静态库,因为静态库所在的文件夹是以Debug开头的,我在看教程的时候看到过以release开头的,这个应该是用来发布程序用的静态库,这个我还不是很清楚他们的区别

    2015-9-9日更新!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    今天又打包了一个静态库,并且做了合并,在使用的时候报错

    我查看了静态库信息,支持的是

    Architectures in the fat file: /Users/chebao/Desktop/i386+arm/libTestCocoapodsWithAFN.a are: armv7 i386 arm64

     这个静态库的模拟器部分是用iPhone4s打包的,这里的i386可能指的是4s的处理器,不支持64位

    当我用5s的模拟器打包的时候,静态信息是

    Architectures in the fat file: /Users/chebao/Desktop/64+arm/libTestCocoapodsWithAFN.a are: armv7 x86_64 arm64

    然后在项目中运行就没有问题了

  • 相关阅读:
    Replay_InsertTrigger
    什么是内网IP地址,常用的内网IP地址段有哪些?
    Repeater嵌套绑定Repeater
    window.history.go(1)和window.location.go(1)的区别
    如何对SQL Server中的tempdb“减肥”
    IIS Temporary ASP.NET Files拒绝访问解决方案
    Server Application Unavailable出现的原因及解决方案集锦
    Sqlserver查找非数字数据行
    C++中的指针,指针函数和函数指针
    char * p = "abc"与const char *p = "abc"
  • 原文地址:https://www.cnblogs.com/chebaodaren/p/4569370.html
Copyright © 2020-2023  润新知