Ios 无法在watchOS上使用XCFramework

Ios 无法在watchOS上使用XCFramework,ios,xcode,frameworks,apple-watch,xcframework,Ios,Xcode,Frameworks,Apple Watch,Xcframework,我正在开发一个iOS应用程序,它使用一个单独的SDK来实现一些常见的业务逻辑。该SDK是在另一个单独的项目中开发的,该项目创建了一个动态二进制框架作为输出。该框架的bundle类型是一个Xcode框架,苹果建议从Xcode 11开始使用它。该框架的内容如下: MySDK.xcframework ├── Info.plist ├── ios-arm64 │ └── MySDK.framework │ ├── Headers │ │ ├── MySDK.h │ │ ├── .

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

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扩展目标上导入相同的框架,并将其运行到真正的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工具正确编译的

我所尝试的:

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

我有点迷路了,我不知道还能尝试什么。任何能对此有所了解的人都将不胜感激。

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

  • 打开自定义框架(例如MySDK)的项目设置
  • 选择watchOS的目标
  • 找到Mach-O类型并将其设置为
    静态库
  • 构建框架和XC框架

  • 现在,您可以将应用程序链接到MySDK.xcframework。不要在应用程序中嵌入XCFrameworWatchOS目标-它应该静态链接。

    Hey!你找到答案了吗?还没有,还在努力寻找答案。你能再解释一下你的所作所为吗?@rhavelka我刚刚更新了答案。请检查一下。