执行cordova run ios命令因ADAL架构不兼容启动失败求助
Cordova iOS 启动崩溃(ADAL架构不兼容)解决方案
问题描述
执行cordova run ios命令时应用启动崩溃,错误信息如下:
Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Termination Reason: DYLD 1 Library missing Library not loaded: @rpath/ADAL.framework/ADAL Referenced from: /Users/USER/Library/Developer/CoreSimulator/Devices/CBD2-4120-B94A-BCB9DA95F774/data/Containers/Bundle/Application/DBBC-4ECC-AF4D-7B087584A6A9/СГК.app/СГК Reason: tried: '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift/ADAL.framework/ADAL' (no such file), '/usr/lib/swift/ADAL.framework/ADAL' (no such file, not in dyld cache), '/Users/admin/Library/Developer/CoreSimulator/Devices/CBD2-4120-B94A-BCB9DA95F774/data/Containers/Bundle/Application/DBBC-4ECC-AF4D-7B087584A6A9/СГК.app/Frameworks/ADAL.framework/ADAL' (fat file, but missing compatible architecture (have 'armv7,armv7s,arm64', need 'x86_64')), '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Develop (terminated at launch; ignore backtrace)
注:通过Xcode以Rosetta模式启动可正常运行,但需通过命令行启动;已尝试用xcodebuild指定x86_64架构编译,问题未解决。
可行解决方案
1. 强制命令行以Rosetta模式执行
- 全局设置:找到终端应用,右键「显示简介」,勾选「使用Rosetta打开」,重启终端后执行
cordova run ios。 - 临时执行:直接用
arch -x86_64 cordova run ios命令,强制以x86_64架构运行cordova命令。
2. 补全ADAL.framework的x86_64架构
- 检查当前架构:执行
lipo -info /path/to/ADAL.framework/ADAL,确认是否包含x86_64。 - 重新编译或下载包含x86_64架构的ADAL库,替换项目中的对应文件。
- 执行
cordova clean ios后重新构建项目。
3. 修改Cordova的编译配置
在项目的platforms/ios/cordova/build.xcconfig文件中添加以下配置:
ARCHS = arm64 x86_64 VALID_ARCHS = arm64 x86_64 ONLY_ACTIVE_ARCH = NO
保存后执行cordova build ios --debug,再用cordova run ios启动应用。
4. 检查Cordova插件的架构配置
如果ADAL是通过插件引入的,检查插件的plugin.xml文件,确保framework配置包含x86_64:
<framework src="ADAL.framework" archs="armv7,armv7s,arm64,x86_64" />
更新插件后,重新添加iOS平台:cordova platform remove ios && cordova platform add ios
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

