Xcode 在macOS命令行应用程序上设置框架-原因:未找到图像
几个星期以来我一直在努力解决这个问题。为什么下面的macOS设置会出现Alamofire链接器错误 重新创建链接器错误的步骤:Xcode 在macOS命令行应用程序上设置框架-原因:未找到图像,xcode,cocoapods,afnetworking,alamofire,podfile,Xcode,Cocoapods,Afnetworking,Alamofire,Podfile,几个星期以来我一直在努力解决这个问题。为什么下面的macOS设置会出现Alamofire链接器错误 重新创建链接器错误的步骤: 创建新的macOS命令行应用程序 从终端更新运行pod init 创建以下文件: 平台:osx,“10.10” 目标为“testMacOS”do 使用你的框架! 吊舱“Alamofire”,“~>4.0” 结束 运行pod安装。打开并构建工作区 错误:dyld:未加载库:@rpath/Alamofire.framework/Versions/A/Alamofire
- 创建新的macOS命令行应用程序
- 从终端更新运行pod init
- 创建以下文件: 平台:osx,“10.10” 目标为“testMacOS”do 使用你的框架! 吊舱“Alamofire”,“~>4.0” 结束
pod安装
。打开并构建工作区
错误:dyld:未加载库:@rpath/Alamofire.framework/Versions/A/Alamofire
原因:找不到图像
在这一点上,这个错误是有道理的。您需要转到目标的/通用/链接的框架和库。然后加入阿拉莫菲尔。现在Alamofire位于工作区的框架目录中
构建并运行。同样的错误。为什么?问题:对于Xcode 8.1,我没有意识到macOS命令行应用程序不支持框架(动态库),就像iOS或桌面macOS应用程序使用捆绑包一样
解决方案:我将源代码从github中删除,并在我的工作区中编译,从而解决了这个问题。成功了。导入静态库也能起作用。命令行工具确实“支持”框架,但不像应用程序包那样。您需要将引用的框架放在
@rpath
中,实际上是~/Library/frameworks/
或/Library/frameworks/您需要手动设置@rpath,在“$(产品目录)/$(FrameworkName)/$(FrameworkName).framework”中安装框架
例如,您的Alamofire框架位于“$(ProductDirectory)/Alamofire/Alamofire.framework””。因此,您需要将@executable\u path/Alamofire/“添加到您自己目标的构建设置-运行路径搜索路径中
此外,“Pods项目-Alamofire(目标)”还需要指定swift运行时动态库的位置。在我的环境中,我需要将“/Applications/Xcode.app/Contents/Developer/toolschains/XcodeDefault.xctoolschain/usr/lib/swift/macosx”添加到“构建设置-运行路径搜索路径”中
但为了方便起见,您可以查看我的pod post_安装代码
post_install do |installer|
files = Dir.glob("*.xcodeproj")
proj_file = files[0]
app_project = Xcodeproj::Project.open(proj_file)
app_project.native_targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['LD_RUNPATH_SEARCH_PATHS'] = '$(inherited) @executable_path/../Frameworks @loader_path/Frameworks'
prefix = ' @executable_path/'
# For each pod, add the framework path to LD_RUNPATH_SEARCH_PATHS
installer.pods_project.targets.each do |pod_target|
config.build_settings['LD_RUNPATH_SEARCH_PATHS'] = config.build_settings['LD_RUNPATH_SEARCH_PATHS'] + prefix + pod_target.name + '/'
pod_target.build_configurations.each do |pod_config|
#if you want embed swift stdlib into every framework, uncommend 1,2 and commend 3,4
#1
#pod_config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'YES'
#2
#pod_config.build_settings['LD_RUNPATH_SEARCH_PATHS'] = '$(inherited) @executable_path/../Frameworks @loader_path/Frameworks'
#3
pod_config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'NO'
#4
pod_config.build_settings['LD_RUNPATH_SEARCH_PATHS'] = '$(inherited) /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/'
end
end
end
end
app_project.save
end
谢谢,刚刚救了我一天!