前言
最近搞了搞Flutter plugin,发现iOS端已经默认使用SPM了,但是SPM目前也比较少,而我拿到的Framework又是纯本地的,不需要发布到远程仓库,但始终无法正确添加。本身不是什么难题,只是因为我不太了解SPM。
如果有误,望指正。
.framework转成.xcframework
由于对方给我的是一堆.framework
文件,而SPM不支持.framework
,所以要先把.framework
变成.xcframework
:
shell
xcodebuild -create-xcframework -output SampleFramework.xcframework -framework path/to/a.framework -framework path/to/b.framework
完成之后你会得到一个Sample.xcframework
.
集成xcframework
假设你的插件名字叫作plugin_name
,并且你要集成的xcframework
名字叫作SampleFramework.xcframework
。
首先,把xcframework
复制到ios/plugin_name
。然后找Package.swift
, 然后把SampleFramework.xcframework
添加进去。
swift
import PackageDescription
let package = Package(
name: "plugin_name",
platforms: [
.iOS("12.0")
],
products: [
.library(name: "plugin_name", targets: ["plugin_name","SampleFramework"]) // 这里添加你的framework名称
],
dependencies: [
.package(path: "Sources/plugin_name/SampleFramework.xcframework") // 这里添加你的framework
],
targets: [
.target(
name: "plugin_name",
dependencies: [
.byName(name: "SampleFramework") // 这里添加你的framework
],
resources: []
),
.binaryTarget(name: "SampleFramework", path: "SampleFramework.xcframework") //这里添加你的framework
]
)