Xamarin iOS 绑定构建没有错误,但在启动时崩溃且没有输出
Xamarin iOS binding builds with no errors, but crashes at start up with no output
我已经从两个本机库(ios 和 Android)中创建了一个统一的 API,名为 Adobe 的 AccessEnabler。现在 Android 绑定有效,没问题。然而 iOS 有问题。绑定项目构建并没有问题,但是当我将它添加到我的示例(或任何示例)时,测试应用程序构建并编译。但是当我启动应用程序时,它只是在启动时崩溃而没有任何输出。我必须深入研究 Mac 上的控制台日志才能找到这个:
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: DYLD, [0x1] Library missing
Application Specific Information:
dyld: launch, loading dependent libraries
DYLD_FALLBACK_LIBRARY_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib
DYLD_ROOT_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot
DYLD_FALLBACK_FRAMEWORK_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks
Dyld Error Message:
Library not loaded: @rpath/AccessEnabler.framework/AccessEnabler
Referenced from: /Users/USER/Library/Developer/CoreSimulator/Devices/E4B4E1EE-EA10-4E82-AD1E-2E8F3FD5BB79/data/Containers/Bundle/Application/47241A8D-5E85-4E8A-990C-387A1FF4E493/AccessEnablerSample.iOS.app/AccessEnablerSample.iOS
Reason: image not found
Binary Images:
0x10cf84000 - 0x10d4e7ff3 +com.golfchannel.AccessEnablerSample (1.0 - 1.0) <EB64A6F8-4E10-352A-9E9E-C75EE2D5A7EF> /Users/USER/Library/Developer/CoreSimulator/Devices/E4B4E1EE-EA10-4E82-AD1E-2E8F3FD5BB79/data/Containers/Bundle/Application/47241A8D-5E85-4E8A-990C-387A1FF4E493/AccessEnablerSample.iOS.app/AccessEnablerSample.iOS
0x10d8c0000 - 0x10d8f3757 +dyld_sim (551.1) <A356F82B-146B-353D-9FC1-250800B6B67C> /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/dyld_sim
0x1153d2000 - 0x11541cacf dyld (551.4) <8A72DE9C-A136-3506-AA02-4BA2B82DCAF3> /usr/lib/dyld
我浏览了所有关于绑定过程的 Xamarin 文档以及此处和 Xamarin 论坛上的无数线程,但一无所获。大多数错误都指向 iOS 系统未嵌入框架的问题。
要添加,我尝试了(.framework 和.a)两种方式以及手动添加或在 "Native References" 部分中添加。更糟糕的是,有一个旧版本的 SDK 被另一位同事绑定了一段时间。但我需要使用最新的,因为他们在内部添加和重组了一些东西。
如有任何帮助,我们将不胜感激。
经过一段时间我终于解决了这个问题。通用框架没有用 Lipo 正确完成。绑定项目和主要项目构建没有问题,但在 运行 时崩溃了。解决方案是要么正确地获得一个通用框架,要么简单地单独绑定每个切片(设备或模拟器)。
我已经从两个本机库(ios 和 Android)中创建了一个统一的 API,名为 Adobe 的 AccessEnabler。现在 Android 绑定有效,没问题。然而 iOS 有问题。绑定项目构建并没有问题,但是当我将它添加到我的示例(或任何示例)时,测试应用程序构建并编译。但是当我启动应用程序时,它只是在启动时崩溃而没有任何输出。我必须深入研究 Mac 上的控制台日志才能找到这个:
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: DYLD, [0x1] Library missing
Application Specific Information:
dyld: launch, loading dependent libraries
DYLD_FALLBACK_LIBRARY_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib
DYLD_ROOT_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot
DYLD_FALLBACK_FRAMEWORK_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks
Dyld Error Message:
Library not loaded: @rpath/AccessEnabler.framework/AccessEnabler
Referenced from: /Users/USER/Library/Developer/CoreSimulator/Devices/E4B4E1EE-EA10-4E82-AD1E-2E8F3FD5BB79/data/Containers/Bundle/Application/47241A8D-5E85-4E8A-990C-387A1FF4E493/AccessEnablerSample.iOS.app/AccessEnablerSample.iOS
Reason: image not found
Binary Images:
0x10cf84000 - 0x10d4e7ff3 +com.golfchannel.AccessEnablerSample (1.0 - 1.0) <EB64A6F8-4E10-352A-9E9E-C75EE2D5A7EF> /Users/USER/Library/Developer/CoreSimulator/Devices/E4B4E1EE-EA10-4E82-AD1E-2E8F3FD5BB79/data/Containers/Bundle/Application/47241A8D-5E85-4E8A-990C-387A1FF4E493/AccessEnablerSample.iOS.app/AccessEnablerSample.iOS
0x10d8c0000 - 0x10d8f3757 +dyld_sim (551.1) <A356F82B-146B-353D-9FC1-250800B6B67C> /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/dyld_sim
0x1153d2000 - 0x11541cacf dyld (551.4) <8A72DE9C-A136-3506-AA02-4BA2B82DCAF3> /usr/lib/dyld
我浏览了所有关于绑定过程的 Xamarin 文档以及此处和 Xamarin 论坛上的无数线程,但一无所获。大多数错误都指向 iOS 系统未嵌入框架的问题。
要添加,我尝试了(.framework 和.a)两种方式以及手动添加或在 "Native References" 部分中添加。更糟糕的是,有一个旧版本的 SDK 被另一位同事绑定了一段时间。但我需要使用最新的,因为他们在内部添加和重组了一些东西。
如有任何帮助,我们将不胜感激。
经过一段时间我终于解决了这个问题。通用框架没有用 Lipo 正确完成。绑定项目和主要项目构建没有问题,但在 运行 时崩溃了。解决方案是要么正确地获得一个通用框架,要么简单地单独绑定每个切片(设备或模拟器)。