【问题标题】:Lint a Swift cocoa pod with SSZipArchive dependency使用 SSZipArchive 依赖项 Lint Swift 可可豆荚
【发布时间】:2015-07-18 17:52:12
【问题描述】:

任何人都幸运地创建了一个具有 SSZipArchive 依赖项的 pod?我的课程都在 Swift 中,但我也包含了我的桥接文件(#import "SSZipArchive")。当我尝试 lint 时,我收到 9 个与 SSZipArchive 相关的错误。请说出你的想法。非常感谢!

  • 错误 | SSZipArchive/SSZipArchive/minizip/ioapi.h:45:10:错误:在框架模块“SSZipArchive.ioapi”中包含非模块化标头
  • 注意 | Target Support Files/Pods-SSZipArchive/Pods-SSZipArchive-umbrella.h:5:9:注意:在 Target Support Files/Pods-SSZipArchive/Pods-SSZipArchive-umbrella.h:5 中包含的文件中:
  • 错误 | SSZipArchive/SSZipArchive/minizip/mztools.h:15:10:错误:在框架模块“SSZipArchive.mztools”中包含非模块化标头
  • 注意 | SSZipArchive/SSZipArchive/minizip/mztools.h:18:10:注意:在 SSZipArchive/SSZipArchive/minizip/mztools.h:18 中包含的文件中:
  • 错误 | SSZipArchive/SSZipArchive/minizip/unzip.h:51:10:错误:在框架模块“SSZipArchive.unzip”中包含非模块化标头
  • 注意 | Target Support Files/Pods-SSZipArchive/Pods-SSZipArchive-umbrella.h:7:9:注意:在 Target Support Files/Pods-SSZipArchive/Pods-SSZipArchive-umbrella.h:7 中包含的文件中:
  • 错误 | SSZipArchive/SSZipArchive/minizip/zip.h:50:10:错误:在框架模块“SSZipArchive.zip”中包含非模块化标头
  • 注意 | Target Support Files/Pods-VideoPlayerLibrary/Pods-VideoPlayerLibrary-umbrella.h:3:9:注意:在 Target Support Files/Pods-VideoPlayerLibrary/Pods-VideoPlayerLibrary-umbrella.h:3 中包含的文件中:
  • 错误 | VideoPlayerLibrary/Pod/Classes/VideoPlayerLibrary-Bridging-Header.h:12:9:错误:无法构建模块“SSZipArchive”
  • 注意 | :0: 错误:无法构建 Objective-C 模块“VideoPlayerLibrary”

这是我的 pod 规格文件:

Pod::Spec.new do |s|
  s.name                  = "VideoPlayerLibrary"
  s.version               = "1.0.27"
  s.platform              = :ios, "4.0"
  s.ios.deployment_target = "8.3"
  s.requires_arc          = true
  s.source_files          = 'Pod/Classes/*'
  s.resource_bundles      = {
    'VideoPlayerLibrary' => ['Pod/Assets/*']
  }
  s.library = 'zlib', 'z'
  s.frameworks = 'Foundation', 'UIKit'
  s.dependency 'Alamofire'
  s.dependency 'SSZipArchive'
end

【问题讨论】:

标签: swift cocoapods lint podspec ssziparchive


【解决方案1】:

我迫不及待地想要一个更好的解决方案,我的临时解决方案是创建一个 zipArchive 类,它与 objc 中的 SSZipArchive pod 对话。不漂亮也不理想,但现在可以使用。我希望他们尽快更新。

注意:您将在桥接头文件中导入 zipArchive.h 而不是 SSZipArchive.h

#import "zipArchive.h"
#import <SSZipArchive/SSZipArchive.h>

@implementation zipArchive

+ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination{
    return [SSZipArchive unzipFileAtPath:path toDestination:destination];
}

@end

您还需要在项目设置中设置“允许非模块化包含”

【讨论】:

  • 我刚刚遇到了这个问题——这仍然是您找到的最佳解决方案吗?你知道是什么导致了问题吗?
  • 还没有,因为我不再从事那个项目。我会在这周尝试并告诉你。
  • @HélèneMartin - 我让它工作了。我必须安装 cocoapods 的预发布版本(卸载 cocoapods 然后运行 ​​sudo gem install cocoapods --pre),然后在你的 swift 文件中导入 SSZipArchive。希望它对你有用,看起来他们已经解决了这个问题:)
  • 很高兴知道——谢谢@marcio-arantes!我很快就会试一试。
【解决方案2】:

我能够编译 SSZipArchive,但不是在查看了他们的快速示例 https://github.com/ZipArchive/ZipArchive 并准确地复制了为我编译和运行的实现之后。

这是在我在 swift 中搜索的各种现有建议没有成功之后

我最终不得不调整框架源代码、复制链接器文件、标志,以使内容匹配并最终编译。这很乏味,因为我当前的 pod 甚至在我的项目中都发生了很多变化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2017-07-10
    相关资源
    最近更新 更多