Swift Package Manager (SPM) 是苹果官方提供的用于管理 Swift 项目的依赖关系和构建过程的工具。它是一个集成在 Swift 编程语言中的包管理器,用于解决在开发过程中管理和构建包依赖项的需求。
那么如何使用SPM管理和分发Objective C编写的二进制库呢?下面为你一一解答。
具体请查看我的内网穿透:ngrok使用教程
如何制作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是一个用于管理iOS和Mac项目的依赖关系的分发管理器。它允许你从源代码仓库中获取依赖项,并将它们编译为可嵌入到你的应用程序中的二进制框架。
用于生成:xcframework
1、在命令行执行:brew install carthage
2、cd到生成库文件的工程目录,执行:carthage build --no-skip-current --use-xcframeworks
编译成功后再跟目录下会出现 Carthage 文件夹,里面就有我们需要的 XCFramework 了。生产xcframeworks
压缩上面生成的xcframeworks。并且上传到你的web服务器,这个时候你会得到一条下载这个压缩包的链接,如:https://hhhhhhhhhhhh.xcframework.zip
可以用:curl -O xcframework.zip的链接。来下载
在命令行中运行shasum -a 256 hhhh.xcframework.zip。得到这个压缩包的SHA256 哈希值
1、以下命令行会自动帮你初始化一个package.swift的管理需要的文件
$ mkdir CommandLineTool
$ cd CommandLineTool
$ swift package init --type library
2、编写package.swift文件
// swift-tools-version:5.8 //这句不可以删除,指定版本的
import PackageDescription
let 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文件夹到公司的git仓库,并且打上tag版本号。git仓库是公开的,这样其他人接入我们的framework的时候才可以下载。
打开Xcode的file - add Packages
点击完成就会下载自己的库和第三方的库
最后就可以愉快的使用啦