Objective-C项目使用Swift静态库(.framework)

制作 .framework 静态库

新建 Framework 工程

截屏2021-02-05 上午10.31.35.png

配置 Project

Build Active Architecture Only 设置为 NO

※设置为 YES,是只编译当前的 architecture 版本,是为了编译速度更快
※设置为 NO,系统会编译所有architecture下的版本

截屏2021-02-05 上午10.33.35.png

Mach-O Type 设置为 Static Library
截屏2021-02-05 上午10.34.32.png

创建对外使用接口文件

①将对外接口文件设置为 public

截屏2021-02-05 上午11.02.10.png

※因为使用这个静态库是 OC 工程,所以要添加 @objc

import Foundation

@objc public class InstanceSDK: NSObject {
    @objc static let shared = InstanceSDK()
    @objc public class func sharedInstance() -> InstanceSDK {
        return shared
    }
    
    @objc public func checkJailBroken() -> Bool {
        let apps = ["/Applications/Cydia.app",
                    "/Applications/limera1n.app",
                    "/Applications/greenpois0n.app",
                    "/Applications/blackra1n.app",
                    "/Applications/blacksn0w.app",
                    "/Applications/redsn0w.app",
                    "/Applications/Absinthe.app"]
        for app in apps {
            if(FileManager.default.fileExists(atPath: app)) {
                return true
            }
        }
        return false
    }
}

编译工程生成 .framework 文件

※因为编译时选择的 Any iOS Device,所以这个 .framework 静态库只能给真机使用

截屏2021-02-05 上午11.18.21.png

OC 工程导入 Swift 静态库( .framework )

①添加 .framework 文件至工程
②设置配置文件

※因为要在 OC 工程中使用 Swift 制作的静态库,所以要将 Always Embed Swift Standard Libraries 设置为 YES

截屏2021-02-05 上午11.31.06.png

截屏2021-02-05 上午11.31.47.png
③ 创建 .swift 文件,自动生成桥接文件
.h 文件中导入包
#import "UseFramework-Swift.h"
#import 
⑤ 已经可以使用 framework 中的接口了
BOOL isJailBroken =  [[InstanceSDK sharedInstance] checkJailBroken];

你可能感兴趣的:(Objective-C项目使用Swift静态库(.framework))