编译包含 iOS 8 App Extension 的 Xcode 项目时生成错误

Posted

技术标签:

【中文标题】编译包含 iOS 8 App Extension 的 Xcode 项目时生成错误【英文标题】:Build error when compiling Xcode project containing iOS 8 App Extension 【发布时间】:2014-10-15 01:35:28 【问题描述】:

我目前正在尝试构建一个包含 ios 8 应用程序扩展的应用程序,但遇到了一些问题。每当我尝试构建和运行(无论是在设备上还是在模拟器中)时,都会出现以下构建错误:

Ld /Users/Cory/Library/Developer/Xcode/DerivedData/Lockdown-aklxfnafpdlclwhfylbcjtzskpmb/Build/Products/Debug-iphoneos/Lockdown\ Auth.appex/Lockdown\ Auth normal arm64
    cd "/Users/Cory/Documents/Programming/Cocoa App/Lockdown/Lockdown"
    export IPHONEOS_DEPLOYMENT_TARGET=8.0
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk -L/Users/Cory/Library/Developer/Xcode/DerivedData/Lockdown-aklxfnafpdlclwhfylbcjtzskpmb/Build/Products/Debug-iphoneos -F/Users/Cory/Library/Developer/Xcode/DerivedData/Lockdown-aklxfnafpdlclwhfylbcjtzskpmb/Build/Products/Debug-iphoneos -filelist /Users/Cory/Library/Developer/Xcode/DerivedData/Lockdown-aklxfnafpdlclwhfylbcjtzskpmb/Build/Intermediates/Lockdown.build/Debug-iphoneos/Lockdown\ Auth.build/Objects-normal/arm64/Lockdown\ Auth.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @executable_path/../../Frameworks -dead_strip -ObjC -framework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/PrivateFrameworks/PlugInKit.framework/PlugInKit -e _NSExtensionMain -fobjc-arc -fobjc-link-runtime -fapplication-extension -miphoneos-version-min=8.0 -Xlinker -dependency_info -Xlinker /Users/Cory/Library/Developer/Xcode/DerivedData/Lockdown-aklxfnafpdlclwhfylbcjtzskpmb/Build/Intermediates/Lockdown.build/Debug-iphoneos/Lockdown\ Auth.build/Objects-normal/arm64/Lockdown\ Auth_dependency_info.dat -o /Users/Cory/Library/Developer/Xcode/DerivedData/Lockdown-aklxfnafpdlclwhfylbcjtzskpmb/Build/Products/Debug-iphoneos/Lockdown\ Auth.appex/Lockdown\ Auth

ld: framework not found /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/PrivateFrameworks/PlugInKit.framework/PlugInKit
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这在扩展目标内部没有额外的代码,只需创建一个扩展,然后每次构建都会给我这个错误。

以前有没有其他人看到过这个问题?我没有做任何不寻常的事情来发生这种情况。

【问题讨论】:

您是否存在“找不到框架”中的路径?该错误表明它不存在。在我的 Mac 上有一个框架文件。在终端中运行ls /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/PrivateFrameworks/PlugInKit.framework/PlugInKit 并检查“没有这样的文件或目录”错误 看起来该路径中没有文件或目录。是否应该重新安装 Xcode 来解决这个问题? 是的,要么重新安装 Xcode,要么重新安装 iOS 8 SDK(我什至不知道如何重新安装 SDK)。如果您最近有 /Applications/Xcode.app 的备份,您可以尝试恢复到该备份。 请注意,您可以安装新的 Xcode 副本而无需卸载旧版本。只需将 /Applications/Xcode.app 重命名为其他名称(或将其压缩或其他),然后再次安装 Xcode。 用 Mac App Store 的新副本尝试了这个,但仍然无法正常工作。 【参考方案1】:

检查您今天的扩展程序的构建设置>其他链接器标志 Xcode 可能已经从您现有的应用程序中复制了它,它应该是空白的。

【讨论】:

以上是关于编译包含 iOS 8 App Extension 的 Xcode 项目时生成错误的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发 之 App Extension 整体总结

Xcode 在调试/运行 iOS8 App Today Extension 时将多个包含的应用程序安装到设备上

Swift之利用API可用性解决App Extension无法编译

IOS 扩展 (Extension)

iOS扩展Extension之Today

iOS App Extension入门