iOS 打包.a静态库 最新
做iOS开发的同学们都知道,我们在开发的过程中经常用到一些第三方的库,我们可以调用,但是看不见他们的源码。有时我们因保密需要不想别人看见我们的源码,只留下调用接口,则需要生成静态库。
.a 静态文件创建流程
创建一个新工程
选择“Cocoa Touch Static Library”,然后next 一直到创建成功。
选择“Cocoa Touch Static Library”.png
创建成功后一般只有一个.h 和 .m 文件
Snip20160930_3.png
这时候就可以把写好的打算打包的文件拖进工程即可
Snip20160930_4.png
这时候就可以把要开放的接口写入 .h 中(例:SDK_Advertisement.h中)根据自己的文件而定。
选择Build Phases Complie Sources 中是要被打包的不被人看见的代码文件。Link Binary With Libraries 这里添加在.a静态库中需要用到的库。 Copy Files 这里一般是对外接口的.h 文件,根据需要自己选择。
Snip20160930_5.png
上面的工作完成之后,就到了画重点的时候了~~~
这时候你的 ~.a文件还是红色,选择真机 Command + B ,再选任意模拟器 Command + B 这时候你的 ~.a 就变黑了。
Snip20160930_6.png
点击你的 ~.a 右键 Show In Finder
这两个 .a 可以进行合并,稍后会进行详解哦~~~
Snip20160930_9.png
这时候这个静态文件就可以使用了,但必须与你的开发的 .h 接口文件一起使用。
Snip20160930_10.png
这时候可能会出一些问题,下面我说两个方面。
如果你的 .a 静态文件有http 请求,你就记得在plist 文件中 打开
Snip20160930_15.png
如果你的 .a静态文件中引入了库文件,则需要在Build Settings -> Linking - > Other Linker Flags 添加 -Objc -all_load 。否则运行会报错。
Snip20160930_16.png.a静态文件 合并
一般我们在实际测试中,如果是模拟器的 .a 文件,与真机的 .a文件不合并,用起来会比较麻烦,所以在测试阶段可以用合并的 .a 文件。合并需要用的终端。
//终端运行即可
lipo -create 真机.a文件的路径 模拟器.a文件的路径 -output 输出位置的路径
// 例子
lipo -create /Users/maoshaoqian/Library/Developer/Xcode/DerivedData/SDK_Advertisement-hjocakxwctrhgsamkwdftgjttqbs/Build/Products/Debug-iphoneos/libSDK_Advertisement.a /Users/maoshaoqian/Library/Developer/Xcode/DerivedData/SDK_Advertisement-hjocakxwctrhgsamkwdftgjttqbs/Build/Products/Debug-iphonesimulator/libSDK_Advertisement.a -output /Users/maoshaoqian/Desktop/libSDK_Advertisement.a
建议:当打包上传App Store 时,可以用真机的 .a 的静态文件包,节省空间。{ 合并 .a 包 (M)= 真机 .a 包 (M)+ 模拟器 .a 包 (M) }
点我点我点我哦.png