[英]SiriKit custom intent linking error on Xcode 10
我創建了一個新的 Intent 文件,現在出現以下鏈接器錯誤:
Undefined symbols for architecture arm64:
"_OBJC_METACLASS_$_INIntentResponse", referenced from:
_OBJC_METACLASS_$_KWdsjkhfjkdhskfIntentResponse in KWdsjkhfjkdhskfIntent.o
"_OBJC_CLASS_$_INIntentResponse", referenced from:
_OBJC_CLASS_$_KWdsjkhfjkdhskfIntentResponse in KWdsjkhfjkdhskfIntent.o
"_OBJC_CLASS_$_INIntent", referenced from:
_OBJC_CLASS_$_KWdsjkhfjkdhskfIntent in KWdsjkhfjkdhskfIntent.o
"_OBJC_METACLASS_$_INIntent", referenced from:
_OBJC_METACLASS_$_KWdsjkhfjkdhskfIntent in KWdsjkhfjkdhskfIntent.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
當我將自定義.intentdefinition
文件添加到沒有Intents
擴展名的項目時,我遇到了這個問題。 我通過以下步驟解決了它:
.intentdefinition
文件MyAppKit
MyApp
目標依賴於新的 Intents 擴展和MyAppKit
框架.intentdefinition
文件,僅檢查MyAppKit
目標的目標成員資格。在此之后,鏈接錯誤消失了。 我還沒有完成擴展,所以肯定還需要其他步驟,例如提供實現自定義意圖的 IntentHandler 的實現。
這里可能並不嚴格要求該框架,但我認為這是推薦的方式,特別是如果您計划實施可以在后台解決的快捷方式。
來自 Apple 論壇 ( edford ) :
看起來 Intent 框架沒有鏈接到目標。 在目標的構建階段,確保 Intents.framework 存在於 Link Binary with Libraries 階段。
這解決了我的類似問題。
當我嘗試在兩個不同的目標(主應用程序和意圖擴展)上使用生成的 Intent 代碼而每個目標具有不同的部署版本和架構時,我發生了這個錯誤。
我的主應用程序正在部署到 ios 9.0 (armv7)並且意圖擴展至少需要是 ios 12.0 (arm64) 。
為了解決這個問題,生成的意圖代碼必須只針對一種架構類型。 就我而言,我必須將主應用程序部署版本升級到ios 12.0 ,將架構類型升級到arm64以匹配意圖擴展。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.