• iOS开发过程中,有些时候需要生成打包.a静态,然后拖入到项目中使用,尤其是有时候引入的一些C++编译过的第三方文件就会引起编译错误的提示,解决这种问题的方法很简单,就是把这些三方的文件打包生成.a静态...

           iOS开发过程中,有些时候需要生成打包.a静态库,然后拖入到项目中使用,尤其是有时候引入的一些C++编译过的第三方文件就会引起编译错误的提示,解决这种问题的方法很简单,就是把这些三方的文件打包生成.a静态库文件,这样就解决了OCC++混编引起的错误,这种解决问题的原理是.a静态库文件时编译好的二进制文件,二进制文件与二进制文件相互混编肯定没有什么问题。

           一般情况下,打包.a静态库的大概步骤分为七步分:生成创建静态库、实现需要使用的类、设置公开类的.h文件、编译打包模拟器静态库、编译打包真机静态库、合并模拟器和真机编译好的静态库、拖入需要使用的项目中测试静态库。那么下面就分模块讲解打包.a静态库文件的步骤了。

          一、生成创建静态库

    1.打开Xcode,选择Create a new Xcode project新建项目,或者在已打开项目工程的情况下点击Xcode,使用快捷键command+shit+n创建新的项目;

    2.创建新的项目时候,在选择类型的里面,选择iOS-->Framework&Library-->Coaoa Touch Static Library,然后点击Next即可。





          二、实现需要使用的类

    1.创建静态库之后,把你想要打包成静态库的类文件都拖入到这个项目工程里面,然后把创建项目自动生成的那个类如果没有需要就把它直接删除即可;

    2.如果拖入整个文件夹进去,文件夹里面的所有类文件都要放在处于一级目录下面,尽量还是不要直接拖入文件夹,一般全选所有的类文件拖入即可。


          三、设置公开类的.h文件

    1.公开类的.h文件就需要添加Headers这个选项,具体步骤为:项目的TARGET-->Build Phases-->点击“+”号-->New Headers Phase
    2.然后找到刚才新加的Headers子目录下面的那个"+",点击“+”号添加所有需要公开的类的.h头文件;
    3.添加完所有需要公开的类的.h头文件之后,这些头文件都是处在Headers里面的Project子目录下,需要手动全选这些头文件直接拖入到上部的Public子目录下面。

    4.把类的.h文件全部拖入到Public里面之后,就成功设置为公开的头文件了。









          四、编译打包模拟器静态库

    1.打包编译之前需要配置一下工程文件,设置Scheme,有两个进入设置的方法,方法一:Xcode顶部菜单栏里面找到Product-->Scheme-->Edit Scheme...,找到Run-->Info里面-->Build Configuration里面选择Debug模式,选择之后点击Close;方法二:从Xcode里面直接进入,Edit Scheme...,找到Run-->Info里面-->Build Configuration里面选择Debug模式,选择之后点击Close即可。

    2.设置完Scheme之后,在项目运行程序类型选项里面,选择模拟器模式,然后使用快捷键command+b编译打包模拟器静态库;

    3.编译成功之后,Products中的.a文件会由红色变成黑色,这就说明编译打包的模拟器静态库打包成功。






          五、编译打包真机静态库

    1.上部分模拟器静态库打包编译成功之后,仍然在项目运行程序类型选项里面,选择真机模式,然后依然使用快捷键command+b编译打包真机静态库;

    2.编译成功之后,Products中的.a文件会由红色变成黑色,这就说明编译打包的真机静态库打包成功。



          六、合并模拟器和真机编译好的静态库

    1.上部分真机静态库打包成功之后,在Producets里面,用鼠标单击选中右键,Show in Finder显示文件位置,然后打开编译后的模拟器和真机的.a静态库文件的位置;

    2.你在Products文件了里面可以看到两个文件夹,Debug-iphoneos是真机的静态库文件位置,Debug-iphonesimulator是模拟器的静态库文件位置,然后打开电脑终端;

    3.在电脑终端里面,使用命令行的方式合并模拟器静态库和真机静态库文件,具体的命令行格式为:lipo -create "真机的.a静态库路径" "模拟器的.a静态库路径" -output "合并后的.a静态库路径"  这里需要特别注意两点:真机静态库路径 和 模拟器静态库路径之间的空格,合并后的静态库名字要和模拟器和真机静态库的名字一致。)

    4.如果以上操作没有出错,终端会在你指定的文件夹下生成一个合并版的.a静态库,找到你指定合并后的.a静态库存放位置,把合并之后的.a静态库拷贝出来。







          七、拖入需要使用的项目中测试静态库

    1.打开你想要使用.a静态库的项目,然后把你刚才复制出来的合并之后的.a静态库和所有的生成打包之后的类的.h文件都拖入到项目中;

    2.然后command+b看看是否报错,然后进行配置修改,一般没有问题,但是不排除你的文件拖入项目之后提示找不到的问题,自行排查一下即可;

    3.然后在你需要使用的具体地方,引入需要使用的.h文件,然后进行测试使用即可。到此,.a静态库的制作介绍完了。






           到此为止,生成.a静态库文件的步骤就全部结束了,同时也是本人2017年写的最后一篇博客,要想了解更多分享知识,咱们来年继续探讨交流,本人微信公众号也会不间断更新不同技术分享,欢迎大家关注!




    展开全文
  • 二、在静态中添加内容这里,我就把我自己平时封装的一个工具类拖进来。 三、设置对应的参数 Build Active Architecture Only选项设置 Build Setting里面的Build Active Architecture Only设置为NO。Buil
  • 这里只是简单的介绍,以后会继续介绍如何将公开的C/C++源码编译成OC使用的静态库.a。 第一步 准备 a. Xcode 新建一个 c++ 工程 CPPtest(macoOS 平台下) 选择C++ b. 新建一个类 world world.hpp 代码 // /...
  • 之前合成了静态库.a, 有时候我们会拿到别人提供的静态库,但是编译报错,这时候最先要考虑的一步就是这个静态库是否支持我们编译的架构。怎么查看支持的架构?废话不多说!下面亲自实验一下 第一步: 准备一个...
  • ios 生成.a文件 2018-10-12 17:27:04
    生产.a库 1.首先创建一个新的工程,选择ios --》Framework&Library --》 Cocoa Touch Static Library 工程名例如 DemoA 2 之后我们会看到自动生成.h和.m文件 可以在.m文件中写你要的...
  • ios编译静态库.a文件 2017-02-23 10:31:46
    近期在做关于静态的工作,需要生成静态(.a),查了一些资料,在此总结记录一下 1. 如果工程中引用其他第三方文件,多于一个时,可以先将这些文件(.a)合并成一个再进行下一步 1) 合并静态:lipo -...
  • 摘要: iOS静态 ...iOS中的静态有 .a 和 .framework两种形式;动态有.dylib 和 .framework 形式,后来.dylib动态又被苹果替换成.tbd的形式。 二、静态与动态的区别? 静态: 链
  • iOS库 .a与.framework区别 2017-10-31 18:03:45
    一、什么是是共享程序代码的方式,一般分为静态和动态。 二、静态与动态的区别? 静态:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。 动态:链接时不复制,程序运行时由...
  • Ios Xcode工程添加.a文件引起错误的几种修改方法(一般是微信的.a静态出错) 一、 TARGETS -> Build Settings-> Search Paths下 1. Library Search Paths 删除不存在的路径,保留.a文件的路径(此处显示的为...
  • 是 Mach Object的缩写,是Mac\iOS 上用于存储程序,的标准格式! 常见的格式: 1.可执行文件 2.objcet .o 文件(目标文件) .a 静态文件.其实就是N个.o文件的集合 3.DYLIB: 动态文件 dylib framework 4.动态...
  • iOS中的.a文件 2017-06-01 16:54:08
    Objective-c语言有.h .m 文件组成。静态可以将 .m文件封装成一个.a文件,第三方....a文件与 iOS静态 首先看静态和动态的区别: 在实际的编程过程中,通常会把一些公用函数打包成函数,供其它程序调用
  • iOS 打包静态库.a文件 2015-10-28 09:14:21
    2、添加需要包含的代码 3、将需要暴露的.h文件暴露出来,.m会自动编译到.a文件中 4、分别选择真机设备和模拟器,command + B编译,staticTest会从红色变成黑色。真机和模拟器环境下用的.a文件是分开的。 5、在...
  • xcode6制作IOS .a静态小记 2014-12-05 15:39:14
    创建iOS静态 简单写个打印的代码 编码完成之后,直接Run就能成功生成.a文件了,选择 xCode->Window->Organizer->Projects->Your Project, 打开工程的Derived Data目录,这样就能找到生成的.a文件了,如图...
  • 摘要 在开发过程中,经常会遇到很多相同的控件、方法等内容;项目中的隐私核心算法、...在制作.framework和.a 过程并不复杂,只要根据步骤操作一遍.framework和.a 的制作你就很轻松的学会了,不要被这些步骤吓...
  • .a静态的制作及使用 2018-03-22 17:59:27
    把笔记里的东西整理出来,好好学习天天向上(๑•̀ㅂ•́)و✧ 一、什么是是共享程序代码的方式,一般分为静态和动态。 二、区别: ...三、iOS里静态形式:.a和.framework 四、iOS里...
  • 以下说明的是使用Mac终端生成iOS模拟器与真机都能运行的.a静态 引用博文: I was here的iOS代码封装成.a文件(封装SDK) 终端指令: lipo -create 模拟器中.a的路径 真机中.a的路径 -output /Users/mac/Desktop/...
  • 最近ios开发项目,遇到了,在device运行和模拟器运行都需要引用.a库,两个的名字相同,分别放在了连个文件夹下面。但是运行起来的时候总是报错。说明是引用的问题。 因为是在真机运行可以通过,但是模拟器编译...
  • 公司的一个项目,需要做成一个.a静态供别人调用,但是静态中引用到了图片和xib 1.打开Xcode,点击File\New\Project,选择iOS\Framework and Library\Cocoa Touch Static Library新建一个静态工程. 2.导入...
  • 首先先准备一个静态库.a文件,比如叫staticLibrary.a,放在桌面的test目录里。 分离arch 首先先file一下staticLibrary.a,看一下该文件包含几种arch。 ~ cd Desktop/test test ls staticLibrary.a test file ...
  • 而.a文件出了静态本身外,还需要引入.h文件,而.framework就不需要如此,由于.framework的方便性所以一般情况下我们见到的较多。什么是库库从本质上来说是一种可执行代码的二进制格式,可以被载入内
1 2 3 4 5 ... 20
收藏数 83,926
精华内容 33,570