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
时间: 2024-11-14 12:37:43