Embarcadero Delphi目标平台SDK版本与最终AndroidManifest版本不符原因
为什么Delphi 10.4中目标SDK版本与最终Manifest的API级别不一致?
核心原因:Delphi IDE的API等级绑定机制
Delphi 10.4(悉尼版本)对Android平台的API等级存在强制绑定,它不会直接使用你在目标平台中选择的SDK版本号来填充Manifest的API参数,而是基于IDE自身的预设配置生成最终的Manifest内容。
具体细节拆解
- IDE预设的API版本:Delphi 10.4原生适配Android API 29(Android 10),其RTL(运行时库)和FMX组件库均基于该API等级开发测试。因此无论你安装的是SDK 25还是其他版本,IDE编译时都会强制将
compileSdkVersion、targetSdkVersion等参数设为29,以此保证组件兼容性。 - 模板占位符的实际取值:Manifest模板里的
%minSdkVersion%和%targetSdkVersion%占位符,并非读取你选中的SDK版本,而是读取项目选项 → Android → Application面板中配置的版本值(默认minSdkVersion为23,targetSdkVersion为29),或是IDE全局的Android平台配置预设。 - SDK版本的实际作用:你安装的SDK 25主要提供编译所需的工具链(如aapt、dx等),而非决定最终Manifest的API等级。Delphi依赖对应SDK中的工具完成编译打包,但API等级逻辑由IDE自身的版本绑定控制。
关于安装Android SDK 31的必要性
Google Play要求新应用适配API 31,因此你必须安装SDK 31,同时需要手动修改Delphi配置:
- 安装Android SDK 31及对应Build Tools版本(建议30.0.3及以上)
- 打开项目选项,在Android → Application中手动将
Minimum SDK Version和Target SDK Version修改为31 - 调整AndroidManifest.template.xml,添加API 31要求的权限(如
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>) - 注意:Delphi 10.4对API 31的支持并非原生完美,部分FMX组件可能存在兼容性问题,需针对性测试调整
内容的提问来源于stack exchange,提问作者TomR
相关产品推荐
相关产品推荐

