美文网首页iOS-开发
iOS 打包.a静态库 最新

iOS 打包.a静态库 最新

作者: 山水域 | 来源:发表于2016-09-30 16:37 被阅读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

    相关文章

      网友评论

        本文标题:iOS 打包.a静态库 最新

        本文链接:https://www.haomeiwen.com/subject/ybnlyttx.html