封装含有pod依赖,并且OC与Swift混编的framework

制作framework

操作步骤

  • 新建工程选择iOS —> Cocoa Touch Framework


    image

pod 需要的三方库

  • pod init
  • open Podfile 编辑framework依赖的第三方库
  • pod install
  • 打开workspace

编辑framework

  • 1.添加所需文件


    image.png
  • 2.TARGETS —> Build Settings 中设置相关项 Build Active Architecture Only 设置为NO的意思是当前打包的.framework支持所有的设备.否则打包时只能用当前版本的模拟器或真机运行.


    image.png
  • 3.Build Setting 搜索linking 设置Dead Code Stripping 为NO是编译选项优化,包瘦身,(可不改) Mach-O Type 选中StaticLibrary (静态库) Xcode默认是动态库.

image.png
  • 4.设置framework最低支持的版本


    image.png
  • 5.TARGETS —> Build Phases 将需要呈现给来的头文件,直接从Project拖到Public中. 不想呈现出来的.h文件不建议拖到Private中. 放在project中即可


    image.png

制作framework时OC与Swift混编

  • 在framework中不支持使用桥接文件!
  • Swift调用OC,非framework编程中原来的bridge.h中即为swift需要使用的所有OC类,为了让Swift文件访问Objective C文件,我们应该在umbrella header,也就是 (framwork名称.h)中,暴露所需要的header。
  • OC调用Swift,这里需要注意两点
    1.Swift文件的写法,需要写为开放类和方法,否则无法被OC调用,这里还是和App中有些区别的
open class InvitationConfig: NSObject {
    
    @objc static public var share: InvitationConfig {
        struct Static {
            static let sharedInstance = InvitationConfig()
        }
        return Static.sharedInstance;
    }

    @objc public func config() {
     
    }

}

2.引入Swift头文件

#import 
  • 编译commond + r 需要编译成功否则无法继续制作

将模拟器framework与真机framework合并

  • 1.在进行编译之前应该设置为release模式


    image.png
  • 2.真机和模拟器模拟器分别运行一次


    image.png

    内部分为Debug版本和Release版本,同时两者有分为真机版本和模拟器版本framework(iphoneos后缀代表真机版本,iphonesimulator后缀代表模拟器)


    image.png
  • 3.(1)真机版本和模拟器版本framework合并 (1).查看架构信息 打开终端使用命令行 lipo -info 查看framework架构信息
    真机版本


    image.png

模拟器版本


image.png

合并真机模拟器版本
(2).因为以上获取的framework只能在对应的版本上运行(即真机只能在设备上运行模拟器版本只能在模拟器上面运行使用)所以需要合并为通用版本
命令行语句:sudo lipo -create (此处请填写真机AppVest文件路径) (此处填写模拟器AppVest文件路径) -output 自定义合成文件存储路径(合成文件的名字AppVest)


image.png

根据以上命令就在相应位置生成了新的AppVest文件,然后把这个新生成的文件拷贝到相应的framework中进行AppVest文件替换
(3).查看替换后的framework支持全部真机模拟器架构


image.png

使用

  • 制作好的framework集成使用 把制作好的framework拖入到工程中,引用相关头文件,然后初始化进行暴露方法调用


    image.png
#import 

至此,已全部完成制作,如有问题,欢迎留言讨论

你可能感兴趣的:(封装含有pod依赖,并且OC与Swift混编的framework)