Delphi生成的Android App Bundle启动崩溃,求调试方案
解决Delphi 10.4.1生成Android App Bundle(.aab)启动崩溃问题
针对你遇到的「单独32/64位APK正常,但.aab包安装后启动仅显示logo就无响应」的问题,你已经定位到了核心原因,这里把关键解决步骤整理清晰,方便其他开发者参考:
问题根源与解决措施
旧版AndroidManifest模板缺失关键内容
你的androidmanifest.template.xml由旧版Delphi生成,缺少适配App Bundle的必要配置项。建议替换为Delphi 10.4.1官方提供的最新模板文件,同时保留项目自定义的权限、Activity声明等内容,确保.aab的Manifest配置符合Google Play的要求。未在双架构构建中统一包含.so文件
App Bundle需要同时打包32位和64位的.so文件,才能在安装时根据设备架构自动拆分。检查项目部署设置:- 打开「Project Options」→「Deployment」
- 分别切换到Android 32位和64位平台
- 确认所有依赖的.so文件都已添加到对应平台的部署列表,保证它们被打包进.aab。
TPath.GetLibraryPath()在.aab环境下路径异常
在应用初始化阶段使用TPath.GetLibraryPath()加载.so文件时,该路径在.aab包的拆分环境中与传统APK不同,会引发未处理异常导致启动崩溃。解决方法是移除对TPath.GetLibraryPath()的依赖,改用系统默认的库加载逻辑(Delphi会自动处理.so的加载),或者使用TPath.GetDocumentsPath()等稳定路径来定位资源文件。
额外调试建议(供其他遇到类似问题的开发者参考)
如果遇到类似启动崩溃但logcat无有效报错的情况,可以尝试:
- 使用
adb logcat *:E过滤错误日志,比*:W更容易定位关键异常 - 利用Android Studio的「App Bundle Explorer」打开.aab文件,检查拆分后的APK是否包含正确的.so文件和资源
- 使用
bundletool将.aab转换为可安装的.apks文件,然后通过adb install-multiple部署到测试设备,再结合logcat排查问题
内容的提问来源于stack exchange,提问作者HypeZ




