Delphi 11编译安卓应用仅Release模式启动崩溃,提示找不到FileProvider类
Delphi 11安卓Release模式FileProvider类找不到崩溃解决方案
根本原因
报错是Release模式打包时androidx.core.content.FileProvider类没有被打入最终APK导致的,核心有两个常见触发原因:
- Release模式开启的R8/D8代码裁剪误将没有显式调用的FileProvider类裁剪移除
- 项目没有正确启用AndroidX支持,打包时未引入androidx.core核心库
解决步骤
步骤1:添加ProGuard保留规则
这是最常见的触发原因,操作如下:
- 打开Delphi项目,依次点击菜单栏「项目」→「选项」
- 左侧导航栏找到「构建」→「部署」→「Android 32位/64位」(对应你打包的架构)
- 找到「ProGuard配置」区域,勾选「使用自定义ProGuard配置文件」
- 打开你指定的自定义ProGuard配置文件,添加以下规则:
-keep class androidx.core.content.FileProvider { *; } -keep class androidx.core.app.CoreComponentFactory { *; }
- 保存配置后重新构建Release包测试
步骤2:确认项目已开启AndroidX支持
如果添加规则后还是报错,检查AndroidX支持配置:
- 进入「项目」→「选项」→「构建」→「Delphi编译器」→「链接」
- 确认勾选「启用AndroidX支持」选项
- 检查你的项目自定义
AndroidManifest.template.xml文件中,FileProvider的配置是否正确,provider标签的android:name属性必须为androidx.core.content.FileProvider,不要误用旧版android.support包的路径
步骤3:验证代码裁剪问题
如果上述操作都无效,可以临时关闭代码裁剪验证问题:
- 回到「部署」→「Android」设置页,找到「启用D8/R8代码裁剪」选项,临时取消勾选
- 重新构建Release包运行,如果不再崩溃,说明还是裁剪规则配置问题,可进一步补充AndroidX相关的保留规则即可
补充说明
你当前使用的Delphi 11初始版本(28.0.42600.6491)存在多个Android打包相关的已知bug,条件允许的话可以安装Delphi 11 Update 1及以上版本的官方更新,可直接修复部分AndroidX依赖打包异常问题。
内容的提问来源于stack exchange,提问作者Bart Kindt
相关产品推荐
相关产品推荐

