iOS17下Delphi11编译App启动崩溃(DYLD库缺失)求助
解决Delphi 11 Alexandria FMX应用在iOS 17/Xcode 15.2下启动崩溃(DYLD库缺失)的方案
核心问题分析
从崩溃日志的DYLD错误来看,应用启动时尝试从/private/preboot/Cryptexes/OS加载框架,但该路径在iOS 17设备端并非有效文件路径,且硬化运行时(Hardened Runtime)禁止相对路径加载,直接导致启动失败。
可行修复步骤
修正框架嵌入策略
打开Xcode导入Delphi生成的iOS应用项目,进入Build Phases->Embed Frameworks:- 确认JavaScriptCore、SafariServices、WebKit框架已添加
- 将这三个框架的嵌入方式从
Embed & Sign改为Do Not Embed(它们属于iOS系统框架,无需嵌入应用包) - 勾选
Code Sign On Copy选项,确保签名正确
重置Delphi iOS SDK配置
- 打开Delphi 11的
Tools->Options->SDK Manager->iOS Device 64-bit - 删除手动添加的
Cryptexes/OS/System/Library/Framework路径 - 重新关联Xcode 15.2的SDK,路径指向
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.2.sdk - 点击
Update Local File Cache完成缓存更新
- 打开Delphi 11的
临时放宽硬化运行时限制(验证用)
在Delphi项目选项的Deployment->iOS->Custom Info.plist Entries中添加:- 键:
com.apple.security.cs.allow-relative-library-loads - 类型:Boolean
- 值:YES
重新编译部署,若应用能正常启动,再逐步关闭该选项并调整其他硬化策略
- 键:
检查并修正隐式依赖路径
使用otool命令排查应用的依赖引用:otool -L /path/to/your/EasyConnect.app/EasyConnect若输出中存在指向Cryptexes的无效路径,在Delphi项目的
Project->Options->Linking->Additional linker options添加参数:-rpath /System/Library/Frameworks
内容的提问来源于stack exchange,提问作者Foxtrot Almeida
相关产品推荐
相关产品推荐

