动态库 Framework

时间:2021-12-15 06:26:56

framework的建立和生成 都比较简单。重点会放在第三块上面(指令集说明及合并)

1.framework target建立

1.1. command + shift + N

选取 ios -> Framework & Library -> Cocoa Touch Framework 新建为一个动态库项目

新建你需要的文件,写入你自己的逻辑,再将该文件的.h 文件写入到对外公开的文件中

如果要使用该文件 需要在target -> Build Phases ->Headers 将需要在外部使用的.h文件从project项移动到public项中

其他需要什么系统框架什么的 就和工程项目一样即可

2.framework 生成

选取你需要编译的环境 iPhone 6.或者 Generic iOS Device

可以将编译环境改为release环境(点击左上角的项目->点开之后选取Edit Scheme -> Run ->Info -> Build Configuration中选取Release即可)

点击运行按钮 成功之后在左侧的Products的组中可以看到一个.framework的文件,右键show in finder.模拟器编译的和真机编译的是不一样的

3.framework iphoneos 与 iphonesimulator  合并

1.先说下内核指令集

//模拟器 内核

    i386 iPhone 4s的8.2版本上能出现
    x86_64 iPhone 7 的最新版本上能出现

        //真机 内核

    armv6 iPhone3G.-
    armv7 iPhone 4s,iPhone 4,或者 Generic iOS Device
    armv7s iPhone 5c,iPhone 5.
    arm64 iPhone 5s,+, 或者 Generic iOS Device

        注:指令集是向下兼容的。因此armv7的指令集是可以运行在iphone5S的,只是效率没那么高而已

     2.查看某个framework支持的指令集

          2.1 进入到当前framework 中  cd /Users/......iphoneos/HGLObjC.framework

          2.2 使用lipo命令查看     lipo -info HGLObjC

                  注:打印如此  Architectures in the fat file: HGLObjC are: armv7 arm64

                       iphoneos 真机地址,iphonesimulator 模拟器地址

      3.合并指令集

          3.1 处于某一个framework中  $ cd /Users/.......iphoneos/HGLObjC.framework

          3.2 合并操作  $lipo -create HGLObjC /Users/.......iphonesimulator/HGLObjC.framework -output HGLObjC

          3.3 再次查看指令集 $ lipo -info HGLObjC

      4.其它操作

        4.1. 剥离某个指令集 $lipo -thin arm64 HGLObjC -output HGLObjC1

               注:arm64 为某个指令

         4.2. 查看具体信息 $lipo -detailed_info HGLObjC

               注:打印如此 

               动态库 Framework