码迷,mamicode.com
首页 > 其他好文 > 详细

.a静态库打包

时间:2016-05-12 14:30:24      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

Introduction about Linkedme packaging .a file

打包

打包流程

1.静态库工程的创建
  • Xcode New一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static Library。直接next去建立一个LinkedME_SDK这样的工程。

技术分享

2.自动生成.h和.m文件
  • 接下来你会看到自动生成.h和.m文件 可以在.m文件中写你要的代码(此静态库现在没有引用这两个文件生成.a前将之删除或者此时将之删除)

技术分享

3.添加LinkedME_SDK到工程里边

技术分享
技术分享

这里注意Copy items if needed需要勾选

4.添加SDK暴露的头文件
  • 点击TARGEtS -> Build Phases ->Copy Files -> 点’+’添加需要的头文件
    技术分享
    注意这里的Copy only when installing不勾选(勾选上之后你想要暴露出来的头文件所属的文件夹就会隐藏)
5.添加引用框架
  • 点击TARGEtS -> Build Phases ->Link Binary With Libraries(0 items) -> 点’+’添加SDK中引用到得框架

  • 现在用到的框架

Foundation.framework
UIKit.framework
CoreGraphics.framework
AdSupport.framework
SafariServices.framework
CoreSpotlight.framework

技术分享

6.生成.a文件
  • 快捷键(command+B)选中真机编译和选中模拟机编译对应生成的连个.a文件一个是真机的一个是模拟机的
    技术分享
  • 这是可以查看.a文件信息通过下边命令
 lipo -info libLinkedME_SDK_1.0.a
7.合并.a文件
  • 这时候有两个.a文件 如果你是选择模拟器编译生成的.a文件那么在真机运行的时候是会报错的 反之亦然 所以为了可以使用真机和模拟器都可以使用.a文件可以合并成为一个.a文件 使用终端合成具体方法如下:
lipo -create /Users/LinkedME09/Library/Developer/Xcode/DerivedData/LinkedME_SDK_1.0-dnlxbjyrawzmxpfoiojqhgfieuyc/Build/Products/Debug-iphoneos/libLinkedME_SDK_1.0.a  /Users/LinkedME09/Library/Developer/Xcode/DerivedData/LinkedME_SDK_1.0-dnlxbjyrawzmxpfoiojqhgfieuyc/Build/Products/Debug-iphonesimulator/libLinkedME_SDK_1.0.a  -output /Users/LinkedME09/Desktop/LinkedME_SDK_1.0.a
8.引用.a静态库文件到工程
  • 此时就可以看到桌面上的.a文件 直接拖入工程就是可调用
    这个.a文件就是模拟器.a和真机.a合并后的.a静态库

打包注意事项

1.打包的时候在Build Phases中 Copy Files目录中如果选中Copy only when installing就是生成include文件夹(包含暴露出来的文件夹)
2.注意打包的时候添加对应的框架
Foundation.framework
UIKit.framework
CoreGraphics.framework
AdSupport.framework
SafariServices.framework
CoreSpotlight.framework
3.打包模拟器(和真机).a文件的时候注意用arm处理器最高的版本模拟器打包
  • 这里说的高版本不是系统的版本 而是手机的型号。因为根据手机的不同arm指令集也不相同。详情参考指令集的区别
4.添加LinkedME_key(两种方式)
  • 在plist文件里边添加LinkedME_key(如下图)
    技术分享
    *或者点击info.plist -> Open As ->Source Code里边添加如下代码
<key>linkedme_key</key>
<dict>
<key>live</key>
<string>46ed6c4bbdbb5c59ed0dd835f7c8868a</string>
<key>test</key>
<string>46ed6c4bbdbb5c59ed0dd835f7c8868a</string>
</dict>
5.查看.a信息命令
  • 查看.a命令

    lipo -info libLinkedME_SDK_1.0.a

*模拟器的.a的输出信息

input file libLinkedME_SDK_1.0.a is not a fat file
Non-fat file: libLinkedME_SDK_1.0.a is architecture: i386

*真机.a信息

input file libLinkedME_SDK_1.0.a is not a fat file
Non-fat file: libLinkedME_SDK_1.0.a is architecture: arm64

注意i386和arm64的区别 [arm指令集区别](http://www.cocoachina.com/ios/20140915/9620.html

  • 合并.a 命令
lipo -create /Users/LinkedME09/Library/Developer/Xcode/DerivedData/LinkedME_SDK_1.0-dnlxbjyrawzmxpfoiojqhgfieuyc/Build/Products/Debug-iphoneos/libLinkedME_SDK_1.0.a  /Users/LinkedME09/Library/Developer/Xcode/DerivedData/LinkedME_SDK_1.0-dnlxbjyrawzmxpfoiojqhgfieuyc/Build/Products/Debug-iphonesimulator/libLinkedME_SDK_1.0.a  -output /Users/LinkedME09/Desktop/LinkedME_SDK_1.0.a

.a静态库打包

标签:

原文地址:http://blog.csdn.net/birkhoff_han/article/details/51363430

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!