iOS-开发

iOS 打包.a静态库 最新

2016-09-30  本文已影响58人  山水域

做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

有问题,扫码交流哦~~~

有问题,扫码交流.jpg
上一篇下一篇

猜你喜欢

热点阅读