美文网首页
ios创建静态库

ios创建静态库

作者: 刃之剑 | 来源:发表于2018-06-22 17:52 被阅读0次

    iOS 比较详细的自定义framework编译方法

    2016年12月09日10:55:04

    编译framework

    1、iOS 开发里面,你不想把源代码给其他人,你就需要编译Framework

    1

    1 、打开Xcode创建一个framework工程。

    2、新建一个TestFrame的工程


    3、新建一个hello的类,并写两个方法


    4、修改一些配置信息,生成支持所有架构的版本。

    修改build setting 里面的build active architecture only 如图片所示的把Yes修改为NO 

     

    build phase 里面搜索 mach”,设置type static library 


    5、把需要公开的.h文件公开

    build phase 里面的headers 里面的project 右键 选择move to public group 

    6、使用command +b 编译 framework

    编译真机 选择 generic iOS device command +b 编译 

    编译模拟器 选择任意一个模拟器 command +b 编译 

    编译成功是这样的 


    7、在文件夹查看编译好的framework

    8、在文件夹可以看到如图下面

    9、把两个文件夹拷贝到任意一个文件夹下面我这边是桌面的一个”ytt”文件夹

    10、下面就需要把模拟器和真机的合并成一个通用版(这里需要在终端操作)

    这些是我的终端操作,下面解释一下

    taijitongdeiMac:~ taiyoshimichi$ cd /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos

    taijitongdeiMac:Debug-iphoneos taiyoshimichi$ ls TestFrame.framework

    Headers    Info.plist  Modules    TestFrame

    taijitongdeiMac:Debug-iphoneos taiyoshimichi$ lipo -info ./TestFrame.framework/TestFrame

    Architectures in the fat file: ./TestFrame.framework/TestFrame are: armv7 arm64 

    taijitongdeiMac:Debug-iphoneos taiyoshimichi$ cd ..

    taijitongdeiMac:ytt taiyoshimichi$ cd /Users/taiyoshimichi/Desktop/ytt/Debug-iphonesimulator

    taijitongdeiMac:Debug-iphonesimulator taiyoshimichi$ ls TestFrame.framework

    Headers    Info.plist  Modules    TestFrame  _CodeSignature

    taijitongdeiMac:Debug-iphonesimulator taiyoshimichi$ lipo -info ./TestFrame.framework/TestFrame

    Architectures in the fat file: ./TestFrame.framework/TestFrame are: i386 x86_64 

    taijitongdeiMac:Debug-iphonesimulator taiyoshimichi$ cd ..

    taijitongdeiMac:ytt taiyoshimichi$ lipo -create /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos/TestFrame.framework/TestFrame /Users/taiyoshimichi/Desktop/ytt/Debug-iphonesimulator/TestFrame.framework/TestFrame -output /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos/TestFrame.framework/TestFrame

    taijitongdeiMac:ytt taiyoshimichi$ cd /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos

    taijitongdeiMac:Debug-iphoneos taiyoshimichi$ ls TestFrame.framework

    Headers    Info.plist  Modules    TestFrame

    taijitongdeiMac:Debug-iphoneos taiyoshimichi$ lipo -info ./TestFrame.framework/TestFrame

    Architectures in the fat file: ./TestFrame.framework/TestFrame are: armv7 i386 x86_64 arm64 

    taijitongdeiMac:Debug-iphoneos taiyoshimichi$ 

    第一步、使用 cd 命令到 真机文件夹

    cd /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos

    第二步、使用ls命令显示TestFrame.framework的所有文件

    ls TestFrame.framework

    第三步、使用lipo -info查看真机支持的编码,可以看到是armv7,arm64 

    lipo -info ./TestFrame.framework/TestFrame

    第四步、使用cd .. 回到根路径

    cd .. 

    第五步、重复一二三,命令,只不过第一步的真机路径改为模拟器路径 最后可以看到编码是  i386 x86_64

    第六步、合并真机和模拟器的framework使用lipo -create路径a  路径b  -output路径a 

    cd ..

     lipo -create /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos/TestFrame.framework/TestFrame /Users/taiyoshimichi/Desktop/ytt/Debug-iphonesimulator/TestFrame.framework/TestFrame -output /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos/TestFrame.framework/TestFrame

     第七步、cd ..一下重复第一二三步查看得到的编码就是  armv7 i386 x86_64 arm64,说明你编译成功了

    可能出现问题1、直接合并两个版本的TestFrame.framework,会便以失败,因为.framework是不可以合并的,s实际上是合并TestFrame.framework里面的TestFrame文件

    可能出现问题2、模拟器版本显示没有i386,原因:是因为你在修改build setting里面的build active architecture only没有把Yes修改为NO,

    可能出现的问题3、在使用的时候运行会报错dyld: Library not loaded: ***** Reason: image not found崩溃

    解决方法,把framework添加一下如下图所示

    仅做笔记 ~

    相关文章

      网友评论

          本文标题:ios创建静态库

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