SPM实现framework自动管理和分发

一、前言

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)

SPM实现framework自动管理和分发_第1张图片 

四、安装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 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文件夹

上传CommandLineTool文件夹到公司的git仓库,并且打上tag版本号。git仓库是公开的,这样其他人接入我们的framework的时候才可以下载。

八、Xcode中自动下载库

打开Xcode的file - add Packages

SPM实现framework自动管理和分发_第2张图片

点击完成就会下载自己的库和第三方的库

最后就可以愉快的使用啦 

你可能感兴趣的:(iOS,ios)