我通过在
xxx.podspec
中添加以下行使其正常工作:
s.preserve_paths = 'xxxxxx.xcframework/**/*'
s.xcconfig = { 'OTHER_LDFLAGS' => '-framework xxxxxx' }
s.vendored_frameworks = 'xxxxxx.xcframework'
注意在s.preserve_paths
末尾的/**/*
以下是完整的xxx.podspec
文件:
Pod::Spec.new do |s|
s.name = 'xxx'
s.version = '1.0.0'
s.summary = 'xxx'
s.description = <<-DESC
xxx is a flutter plugin
DESC
s.homepage = 'https://example.com'
s.license = { :file => '../LICENSE', :type => 'BSD' }
s.author = { 'xxx' => 'email@example.com' }
s.source = { :path => '.' }
s.source_files = 'Classes/**/*'
s.dependency 'Flutter'
s.platform = :ios, '10.0'
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }
s.swift_version = '5.0'
s.preserve_paths = 'xxxxxx.xcframework/**/*'
s.xcconfig = { 'OTHER_LDFLAGS' => '-framework xxxxxx' }
s.vendored_frameworks = 'xxxxxx.xcframework'
end
请确保将xxxxxx.xcframework
目录复制到.../xxx/ios/xxxxxx.xcframework
(与您的插件xxx.podspec
位于同一目录下)
将xxxxxx.xcframework
添加到Pods
方案中,以便能够导入它
在运行flutter命令创建插件时,Frameworks
目录应该位于Pods
方案下面,例如:
flutter create --org com.xxx --template=plugin --platforms=android,ios -a java -i swift xxx
来源: 开发包和插件
(如果没有,请添加)
![Adding framework 1](https://istack.dev59.com/PUt0B.webp)
- 打开
Pods
方案,然后右键点击 Frameworks
- 选择
Add Files to "Pods"...
![enter image description here](https://istack.dev59.com/O1JZ7.webp)
- 导航到包含
xxxxxx.xcframework
的ios
目录根目录
- 取消选中
如果需要,复制项目
- 选择
创建文件夹引用
- 选中
Pods-Runner
- 选中您的插件,例如
xxx
- 点击
添加
将xxxxxx.xcframework
嵌入您的项目中
(这样可以让您在真实设备上运行/发布)
![enter image description here](https://istack.dev59.com/gMb1j.webp)
- 点击
Pods
方案
- 在
TARGETS
中选择 Pods-Runner
- 点击
General
选项卡
- 确保
xxxxx.xcframework
出现在 Frameworks and Libraries
下(如果没有,则通过点击 + 添加)
- 将
Embed
更改为 Embed & Sign
![enter image description here](https://istack.dev59.com/ydj63.webp)
- 点击您的插件,例如:
xxx
- 确保
xxxxx.xcframework
出现在框架和库
下面
- 将
嵌入
更改为嵌入并签名
![enter image description here](https://istack.dev59.com/061L5.webp)
- 对于下面两个目标:
Pods
方案,接下来的步骤应该已经正确了,但请再次确认一下。
- 点击
Build Phases
。
- 点击
Link Binary With Libraries
。
- 确保
xxxxx.xcframework
存在,如果不存在,请通过单击+添加,并将Status
设置为Required
。
现在,您应该能够导入框架并在您的代码中引用它,而且发布也应该非常顺利。
希望这可以帮助您,祝您好运。希望这不会很快再次改变。
祈祷万事顺利
.xcframework
的应用程序?此外,你不需要添加所有三个步骤(Cocoapods、SPM和xcframework)。只需将.xcframework
拖入你的项目即可。 - Ben Butterworth.xcframework
。此外,当用户将您的插件添加到其项目中时,您的插件会通过cocoapods添加,而不是SPM。当您屏蔽名称时,会使事情变得更加困难。在我看来,SPM对您不适用。 - Ben Butterworthvendored_frameworks
配置 XCF。虽然这不是一个很好的文档功能:这个 问题有一个示例项目。我从未使用过它。 - Ben ButterworthPackage.resolved
。它只会改变Podfile的依赖关系/pod install
的输出。 - Ben Butterworth