gpt4 book ai didi

ios - 无法在 watchOS 上使用 XCFramework

转载 作者:行者123 更新时间:2023-12-01 21:56:20 25 4
gpt4 key购买 nike

我正在开发一个 iOS 应用程序,该应用程序使用单独的 SDK 来处理一些常见的业务逻辑。该 SDK 是在另一个单独的项目中开发的,该项目创建一个动态二进制框架作为输出。该框架的捆绑类型是 Apple 建议从 Xcode 11 开始使用的 XCFramework。此 XCFramework 的内容如下:

MySDK.xcframework
├── Info.plist
├── ios-arm64
│ └── MySDK.framework
│ ├── Headers
│ │ ├── MySDK.h
│ │ ├── ...
│ ├── Info.plist
│ ├── Modules
│ │ └── module.modulemap
│ ├── MySDK
│ └── _CodeSignature
│ └── CodeResources
├── ios-x86_64-simulator
│ └── MySDK.framework
│ ├── Headers
│ │ ├── MySDK.h
│ │ ├── ...
│ ├── Info.plist
│ ├── Modules
│ │ └── module.modulemap
│ ├── MySDK
│ └── _CodeSignature
│ └── CodeResources
└── watchos-armv7k_arm64_32
└── MySDK.framework
├── Headers
│ ├── MySDK.h
│ ├── ...
├── Info.plist
├── Modules
│ └── module.modulemap
├── MySDK
└── _CodeSignature
└── CodeResources

如果我在 iOS 目标上使用 XCFramework,一切都按预期工作,只需导入 MySDK 模块,我就可以毫无问题地使用 SDK。

但是,如果我在 Watch Extension 目标上导入相同的框架,并将其运行到真正的 iWatch 中,则会出现以下错误:

详细信息

Unable to install "Watch"
Domain: com.apple.dt.MobileDeviceErrorDomain
Code: -402620393
--
A signed resource has been added, modified, or deleted.
Domain: com.apple.dt.MobileDeviceErrorDomain
Code: -402620393
User Info: {
DVTRadarComponentKey = 364477;
MobileDeviceErrorCode = "(0xE8008017)";
"com.apple.dtdevicekit.stacktrace" = (
0 DTDeviceKitBase 0x000000011ff4681a DTDKCreateNSErrorFromAMDErrorCode + 233
1 DTDeviceKitBase 0x000000011ff87f70 __90-[DTDKMobileDeviceToken installApplicationBundleAtPath:withOptions:andError:withCallback:]_block_invoke + 155
2 DVTFoundation 0x000000010697e385 DVTInvokeWithStrongOwnership + 73
3 DTDeviceKitBase 0x000000011ff87ca8 -[DTDKMobileDeviceToken installApplicationBundleAtPath:withOptions:andError:withCallback:] + 1654
4 IDEiOSSupportCore 0x000000011fdfee91 __118-[DVTiOSDevice(DVTiPhoneApplicationInstallation) processAppInstallSet:appUninstallSet:installOptions:completionBlock:]_block_invoke.352 + 4165
5 DVTFoundation 0x0000000106ab1a10 __DVT_CALLING_CLIENT_BLOCK__ + 7
6 DVTFoundation 0x0000000106ab3652 __DVTDispatchAsync_block_invoke + 1194
7 libdispatch.dylib 0x00007fff729b6583 _dispatch_call_block_and_release + 12
8 libdispatch.dylib 0x00007fff729b750e _dispatch_client_callout + 8
9 libdispatch.dylib 0x00007fff729bcace _dispatch_lane_serial_drain + 597
10 libdispatch.dylib 0x00007fff729bd452 _dispatch_lane_invoke + 363
11 libdispatch.dylib 0x00007fff729c6a9e _dispatch_workloop_worker_thread + 598
12 libsystem_pthread.dylib 0x00007fff72c116fc _pthread_wqthread + 290
13 libsystem_pthread.dylib 0x00007fff72c10827 start_wqthread + 15
);
}

--

System Information

macOS Version 10.15.3 (Build 19D76)
Xcode 11.4 (16134)

SDK 目标是为 watchOS 架构编译的,你们可以在其内容中看到相应的文件夹 (watchos-armv7k_arm64_32)。此外,我已确保它已使用 LIPO 工具正确编译。

我尝试过的:

  • 关注相关问题 here , herehere没有任何成功。
  • 复制仅具有 watchos 架构的 XCFramework,并将这两个框架都包含在项目中,但目标不同目的地。它也不起作用。
  • 尝试所有框架嵌入选项:嵌入并签名或嵌入而不签名。它给出了上面显示的错误。

我有点迷茫,我不知道还能尝试什么。任何人都可以阐明这一点,我们将不胜感激。

最佳答案

我使用 staticlib Mach-O 类型解决了构建自定义框架的相同问题:

  1. 打开自定义框架(例如 MySDK)的项目设置。
  2. 为 watchOS 选择目标。
  3. 找到 Mach-O Type 并将其设置为 Static LibraryMach-O Type: Static Library
  4. 构建框架和 xcframework。

现在您可以将您的应用程序与 MySDK.xcframework 链接起来。不要在应用程序中嵌入 watchOS 目标的 xcframework - 它应该静态链接。

关于ios - 无法在 watchOS 上使用 XCFramework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61192460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com