我正在使用CocoaPods在私有pod中开发项目。 我在将Realm框架包含到我的私有pod中时遇到了问题:
ld:未找到框架体系结构x86_64
clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
(尝试在podspec文件中包含Realm框架时发生此错误)
我在Realm提交了一个问题(github.com/realm/realm-cocoa/issues/5230)
然而,问题仍然没有解决
你没有必要回答这个问题,我将大部分内容复制到这篇文章中
所以我想问你们,看看是否有解决这个问题的线索。
我们假设示例项目的名称是RealmTest
我使用pod lib create RealmTest
创建了它
我为Realm在Swift中运行了两个必要的框架,添加到根项目目录中的RealmTest
目录中。
我将行s.vendored_frameworks = 'RealmTest/Realm.framework', 'RealmTest/RealmSwift.framework'
添加到podspec文件中
然后我为Example项目做了pod install
。
构建确实成功了,我期望通过所有这些来加速项目的构建时间,而不是从源代码编译Realm。
直到我import RealmSwift
并开始使用它。
构建报告如前所述:
ld: framework not found Realm for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我特意使用lipo -info
来检查从其官方网站下载的两个Realm框架。它们都支持所有这四种架构。
这两个框架已经包含在Pods
中。
在项目的产品目录中(编译技术成功,但最后链接失败),两个框架确实都包含在app bundle的框架目录中。
我创建了一个支持所有架构的虚拟框架,并将其添加到项目中 随着Realm import的注释,该项目成功构建 一旦我导入Realm模块,错误就会重新出现! 但Realm的一名团队成员看了一下示例项目,到目前为止在Realm方面找不到任何错误。
您可以阅读问题
中的讨论github.com/realm/realm-cocoa/issues/5230
并下载sample project。它已包含在Realm框架和虚拟框架中
要查看错误,只需取消注释import RealmSwift
位于TestClass.swift
项目Development Pods/RealmTest/RealmTest/Classes
项目组Pods
下的类文件RealmTest.xcworkspace
顶部的Pod::Spec.new do |s|
s.name = 'RealmTest'
s.version = '0.1.0'
s.summary = 'A short description of RealmTest.'
s.description = <<-DESC
TODO: Add long description of the pod here.
DESC
s.homepage = 'https://github.com/ivsall2012/RealmTest'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'ivsall2012' => 'ivsall2012@gmail.com' }
s.source = { :git => 'https://github.com/ivsall2012/RealmTest.git', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'
s.source_files = 'RealmTest/Classes/**/*'
s.vendored_frameworks = 'RealmTest/DummyFramework.framework','RealmTest/Realm.framework', 'RealmTest/RealmSwift.framework'
end
。
我在这里做了一件奇怪的事情,包括将框架纳入pod项目以加快构建时间?我在互联网上找不到太多相关内容?
感谢您的时间!!
8.3.2
3.1
use_frameworks!
target 'RealmTest_Example' do
pod 'RealmTest', :path => '../'
target 'RealmTest_Tests' do
inherit! :search_paths
end
end
{{1}}
[样本项目(32.96 MB)]