一、前言
Swift Package Manager (SPM) 是苹果官方提供的用于管理 Swift 项目的依赖关系和构建过程的工具。它是一个集成在 Swift 编程语言中的包管理器,用于解决在开发过程中管理和构建包依赖项的需求。
那么如何使用SPM管理和分发Objective C编写的二进制库呢?下面为你一一解答。
二、先准备好你的web服务
具体请查看我的内网穿透:ngrok使用教程
三、制作OC的framework
如何制作framework自行查看网上教程,这里省略。
注意:
1、图片资源放在后缀为.xcassets的文件夹里面,这个文件夹放在framework里一起生成framework
加载图片:
NSBundle *bundle = [NSBundle bundleForClass:[self class]];UIImage *applePic = [UIImage imageNamed:@"图片名称" inBundle:bundle compatibleWithTraitCollection:nil];
2、多语言文件也要放在framework里一起生成framework
+(NSString *)systemLanguage
{NSString *languageStr = [NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]];return languageStr;
}+(NSString *)funLocalizedString:(NSString *)key
{NSString *lprojPath = [[NSBundle bundleForClass:[self class]] pathForResource:[INDOTool systemLanguage] ofType:@"lproj"];NSString *content = [[NSBundle bundleWithPath:lprojPath] localizedStringForKey:(key) value:nil table:nil];return content;
}
3、在制作framework的时候,在库文件的build setting - framework search path里面的值清空,如:$(inherited),$(PROJECT_DIR)
四、安装carthage
Carthage是一个用于管理iOS和Mac项目的依赖关系的分发管理器。它允许你从源代码仓库中获取依赖项,并将它们编译为可嵌入到你的应用程序中的二进制框架。
用于生成:xcframework
1、在命令行执行:brew install carthage
2、cd到生成库文件的工程目录,执行:carthage build --no-skip-current --use-xcframeworks
编译成功后再跟目录下会出现 Carthage 文件夹,里面就有我们需要的 XCFramework 了。生产xcframeworks
五、上传xcframework.zip到web服务
压缩上面生成的xcframeworks。并且上传到你的web服务器,这个时候你会得到一条下载这个压缩包的链接,如:https://hhhhhhhhhhhh.xcframework.zip
可以用:curl -O xcframework.zip的链接。来下载
在命令行中运行shasum -a 256 hhhh.xcframework.zip。得到这个压缩包的SHA256 哈希值
六、制作package.swift
1、以下命令行会自动帮你初始化一个package.swift的管理需要的文件
$ mkdir CommandLineTool
$ cd CommandLineTool
$ swift package init --type library
2、编写package.swift文件
// swift-tools-version:5.8 //这句不可以删除,指定版本的import PackageDescriptionlet package = Package(name: "MyLibrary",platforms: [.iOS(.v13) // 适用的 iOS 版本],products: [.library(name: "MyLibrary",targets: ["MyLibraryTarget"]),],dependencies: [.package(url: "https://github.com/facebook/facebook-ios-sdk", from: "14.0.0"), // Facebook 登录库的依赖.package(url: "https://github.com/adjust/ios_sdk", from: "4.33.6") // Adjust 库的依赖],targets: [.binaryTarget(name: "MyLibrary", // 二进制库的名称url: "", // 二进制库的下载链接 上一步生成的checksum: "" // 二进制库的校验和 上一步生成的),.target(name: "MyLibraryTarget",dependencies: [.target(name: "MyLibrary"), // 添加对二进制库的依赖.product(name: "FacebookLogin", package: "facebook-ios-sdk"), // 添加对 Facebook 登录库的依赖.product(name: "Adjust", package: "ios_sdk"), // 添加对Adjust库的依赖])]
)
七、上传CommandLineTool文件夹
上传CommandLineTool文件夹到公司的git仓库,并且打上tag版本号。git仓库是公开的,这样其他人接入我们的framework的时候才可以下载。
八、Xcode中自动下载库
打开Xcode的file - add Packages
点击完成就会下载自己的库和第三方的库
最后就可以愉快的使用啦