gpt4 book ai didi

ios - Cocoapods - 具有内部静态库依赖的 Swift 框架

转载 作者:行者123 更新时间:2023-12-02 09:43:00 25 4
gpt4 key购买 nike

我正在实现一个用 Swift 编写的 iOS 框架。该框架内部依赖于基于 C 的静态库。为了使其工作并根据一些教程,我制作了一个与此类似的模块图:

framework module Module {
umbrella header "Module.h"

explicit module ModuleDep {
private header "header1.h"
}

export *
}

基于此,我可以在 Swift 中包含 C 代码,如下所示:

import Module.ModuleDep

当手动导出框架时,一切似乎都工作得很好。这是肯定的事情,我希望 Cocoapods 支持我的框架并具有代码可见性(更易于调试)。使其工作的 podspec 是这样的(省略了一些部分):

Pod::Spec.new do |s|
s.platform = :ios
s.ios.deployment_target = '12.0'

s.module_map = "Module.modulemap"
s.source_files = "Module/*.{h,swift}", "ModuleDep/*.h"
s.vendored_libraries = "ModuleDep/*.a"

s.swift_version = "5.1"
end

根据我的理解,当这是您向用户提供的工件时,就会使用 vendored_libraries,这就是我不喜欢此解决方案的原因。

我也尝试过这个规范变体:

Pod::Spec.new do |s|
s.platform = :ios
s.ios.deployment_target = '12.0'

s.module_map = "Module.modulemap"
s.source_files = "Module/*.{h,swift}", "ModuleDep/*.h", "ModuleDep/*.a"
s.swift_version = "5.1"
end

但它无法编译。

那么正确的做法是什么呢?还是我做错了什么?

最佳答案

由于您使用静态库作为依赖项,因此您必须在 podspec 文件中将其指定为库。这就是为什么你的第二种方法不起作用,因为它是一个库而不是源文件。

docs 中所述vendored_libraries 用于 Pod 附带的库。另外,在您的情况下,基于 C 的静态库是一个依赖项,必须随 Pod 一起提供。因此,在您的情况下使用 vendored_libraries 应该没问题。

关于ios - Cocoapods - 具有内部静态库依赖的 Swift 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60222919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com