最近在为合作方做一个framework的静态库,里面引用了高德地图的SDK,以下是我制作的过程中总结的经验:
创建:
1. 打开Xcode创建一个framework :

2. 修改以下几处的配置参数 :



3. Build Phases -> Headers,可以看出有三个选项,分别是Public,Private,Project;把需要暴露给别人的.h文件拖到Public中,剩下的不要暴露的,即为隐藏的文件,放在Project中

4. 把需要的静态库拖到项目中,但是Add to targets 项不要打钩(这样其他项目调用静态库时,再把需要的其他静态库添加到应用中,不用担心重复添加的问题),改路径:右键项目Show in Finder , 然后把其他静态库所在的文件夹拖到 Build Settings -> Framework Search Paths 中,具体看下图:


5. 编译:分别选择真机和模拟器进行 command + B

6. 都编译过后就要合并两个库。选中XX.framework右键,Show in Finder,会看到在product文件夹下有两个文件夹 Release-iphoneos 和 Release-iphonesimulator

在终端把两个framework合并

lipo -create 模拟器下的framework里的MapUsingFramework文件的路径 真机下的framework里的MapUsingFramework文件的路径 -output 最终放置的路径/MapUsingFramework(与合并的文件名一样,没有后缀)如:
lipo -create /Users/zhengmei/Desktop/合并/3/Release-iphoneos/MapUsingFramework.framework/MapUsingFramework /Users/zhengmei/Desktop/合并/3/Release-iphonesimulator/MapUsingFramework.framework/MapUsingFramework -output /Users/zhengmei/Desktop/合并/3/MapUsingFramework
把合并后的文件替换有Header文件夹的framework下的相同文件,并把Info.plish文件删掉

到这里,framework已经制作完成了
使用:
把framework拖到项目中,设置framework和framework下Header的路径,把framework中的Header文件夹拖到 Build Settings -> Header Search Paths

网友评论