一、前言
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
點擊完成就會下載自己的庫和第三方的庫
最后就可以愉快的使用啦?