Delphi 121安卓开发环境配置指南:SDK、NDK与JDK的完整搭建与排坑
2026/9/6 17:20:59 网站建设 项目流程

简介:针对 Embarcadero Delphi 环境中安卓 SDK 配置复杂、路径易错的问题,这份 PDF 教程以轻量形式提供完整解决方案,包体仅 1 个文件共 1.3MB。内容从解压 PlatformSDKs 压缩包开始,细致演示在 IDE 的 SDK Manager 中删除旧配置、添加新 SDK,并准确设置 Android SDK、NDK(如 android-ndk-r21)与 JDK(如 jdk-17.0.10.7-hotspot)的具体路径,最后选择 android-33 版本并保存。文档提供了可直接参照的路径示例,并提示读者结合实际开发工具版本灵活调整,能显著降低初次配置时的试错成本。截至目前已有 158 人学习,适合需要快速搭建 Delphi 安卓开发环境的开发者,尤其是对 SDK 配置流程不够熟悉的新手,是一份简洁实用的操作指南。 做Delphi安卓开发,十有八九第一次都栽在环境配置上。IDE装好了,代码写了两行,一编译不是找不到SDK,就是报错说NDK版本不对。尤其Delphi 121这套东西,表面上安装程序会自动把Android SDK、NDK、JDK全部塞进PlatformSDKs目录,但实际用起来,这个目录既不一定给全组件,也不会自动帮你把IDE里的SDK Manager注册好,最后总得自己动手把PlatformSDKs环境搭建和IDE集成设置补齐。这篇东西不聊语法不聊控件,就专门讲清楚在Delphi 121里配置安卓SDK的每一步:需要装哪些东西、每个组件怎么选版本、在IDE里怎么配置、真机怎么连、编译不过怎么排查。

1. Delphi 121安卓开发环境:先搞清要装什么

1.1 IDE和三个SDK的关系

很多人刚上手时有个误解,以为装了RAD Studio就等于安卓开发环境全齐了。实际上Delphi IDE只是一个开发外壳,它负责代码编辑、项目管理、调试器这些上层的活,真正把Delphi代码编译成安卓APK,靠的是一整套外部的安卓构建工具链。这套工具链主要是四样东西:Android SDK(负责提供平台API和构建工具)、NDK(负责编译原生C/C++代码,Delphi RTL里有一部分底层库依赖它)、JDK(负责打包和签名APK时用到的Java工具),以及IDE本身。

打个比方,IDE是厨师,SDK是食材,NDK是特殊厨具,JDK是装盘打包的盒子。四样少一样,这道菜就出不了厨房。Delphi 121的安装程序会尽力帮你把这四样准备好,但问题是它准备的是“基本盘”——只装它认为最保守的默认组件,而你手上设备的安卓版本、开发需求、网络环境各有不同,基本盘往往不够用。

1.2 版本选型:JDK、NDK、API Level怎么选

版本选型是环境配置里最关键的决策,也是网上提问最多的地方。我在三次重装环境后总结出一套非常稳定的组合,直接照着选就行:

组件推荐版本说明
Android SDK API LevelAPI 33或34Delphi 121支持API 21到35,默认目标API 33/34最稳
NDKr25b或r25cr26之后工具链变化大,部分工程会编不过
JDKJDK 11(64位)版本高了报“class file major version”,低了编译链起不来

为什么API Level不建议一上来就追最高的35?因为API Level对应的是设备上安卓系统的版本,如果你手头的测试机是安卓13或更早,目标API定太高反而要处理一堆兼容警告,而且部分三方SDK还没有适配到最新API。先跑通基础流程,再考虑升级目标版本,这个顺序不要搞反。

NDK这边要特别说一句,很多人在Google官网直接下载了最新NDK r27,放进PlatformSDKs后IDE死活识别不了,或者能识别但Link阶段报“undefined reference”。这不是你配置错了,是版本太新,Delphi 121的构建脚本还没适配。老老实实用r25b/c,我就是在这上面浪费了一个下午。

2. PlatformSDKs环境搭建:目录结构与缺失组件补齐

2.1 默认安装后的目录长什么样

Delphi 121在Windows上装好后,安卓相关工具默认放在这个路径下面:

C:\Users\Public\Documents\Embarcadero\Studio\23.0\PlatformSDKs

注意Studio后面的数字是版本目录号,不同小版本可能不一样,别死记,用系统搜索或者Everything搜“PlatformSDKs”是最快的。打开这个目录,正常安装的话能看到类似这样的结构:

PlatformSDKs\ ├── android-ndk\ │ ├── ndk-build.cmd │ ├── toolchains\ │ └── platforms\ ├── android-sdk-windows\ │ ├── build-tools\ │ ├── platforms\ │ ├── platform-tools\ │ └── SDK Manager.exe ├── jdk-17.0.11\ │ └── bin\ └── apache-ant\

如果整个PlatformSDKs目录都不存在,说明安装RAD Studio时没有勾选安卓支持组件。这种情况不用重装整个IDE,重新运行安装程序,选择“Modify”,勾上“Android”相关的平台组件,把安装流程走完即可。

2.2 用SDK Manager补齐platforms和build-tools

刚才说了,安装程序只给基本盘。最常见的问题是platforms目录下只有一个android-XX目录,build-tools也可能只有一两个版本。这时候就要手动补齐。

在android-sdk-windows目录下找到SDK Manager.exe(就是安卓官方那个SDK Manager),双击运行。耐心等它刷新组件列表,然后重点勾选以下内容:

  • Platforms:Android API 33或34(根据你设备版本选)
  • Build-Tools:建议选与API Level匹配的版本,例如34.0.0
  • Platform-Tools:保持最新,这个是adb工具的来源
  • “SDK License”相关的协议全部接受

下载过程在国内网络下可能比较慢,甚至卡在某个包上。实测下来,挂一个稳定的网络代理能解决大部分下载失败问题。同时注意360、火绒这类安全软件,它们会拦截adb.exe和aapt.exe的运行,我第一次就是被拦截之后一直报“aapt: error: file failed to compile”。

3. IDE集成设置:从SDK Manager到Project Options

3.1 在IDE里注册SDK

工具链都备齐了,接下来要让Delphi IDE知道这些东西在哪,并且按正确的顺序调用它们。这一步叫“SDK注册”,位置在:

Tools -> Options -> Deployment -> SDK Manager

打开后左侧平台列表里应该有Android相关平台。如果列表空的,点击“Add”,选择PlatformSDKs目录下的android-sdk-windows目录。Delphi会尝试自动识别目录里的NDK和JDK,识别成功后需要手动确认几个关键路径:

  • Java SDK:jdk-11.x.x目录下bin的上一级(即JDK根目录)
  • Android SDK:android-sdk-windows
  • NDK:android-ndk

有一次我点“Add”之后Delphi直接崩溃,排查半天发现是路径里有中文字符。强烈建议所有工具链目录保持默认的英文路径,别为了“省事”把PlatformSDKs挪到D盘中文目录,后面编译期各种奇葩报错会让你后悔。

注册完成后,IDE会触发一次“ZIP”相关组件校验,界面可能卡几秒,这是正常现象,它正在检查当前的SDK配置是否完整。等状态栏全部变绿(打勾)就说明注册成功。

3.2 Project Options里的关键参数

SDK注册好只是第一步,每个工程还需要指定目标平台和SDK版本。在Project Manager面板里右键工程名,选择“Target Platforms”,勾上:

  • Android 64-bit(推荐,主流设备都支持)
  • Android 32-bit(如果还要兼容老设备可以加)

然后在Project -> Options里设置这几个关键项:

  • Minimum OS Version:设置API级别,例如23代表安卓6.0,如果你的测试机是安卓10,设备API是29,最小版本设23完全没问题
  • SDK Version:选择刚刚注册的SDK API Level(如API 34),下拉里看不到就回SDK Manager刷新
  • Library路径:需要手动加上NDK里的系统库路径,格式类似:
$(PlatformSDKs)\android-ndk\platforms\android-33\arch-arm64\usr\lib

这个Library路径配置很多人会漏。漏掉之后典型现象是Link阶段报“liblog.so not found”或者“cannot find -llog”。我在第一次配置时就是卡在这里,后来把NDK对应API版本的系统库路径加进去,编译秒过。

4. 真机部署与模拟器调试

4.1 连接真机的必要条件

环境配置完,第一次跑Hello World建议直接用真机而不是模拟器,模拟器还要额外配置AVD,真机反而省事。连接真机前确认这几件事:

  • 手机开启开发者选项,并打开USB调试
  • 用数据线连接电脑,手机弹出授权弹窗时选择允许
  • 电脑上能识别设备,可以用命令行验证

打开CMD,进入platform-tools目录,执行:

adb devices

能看到一串设备ID并显示device状态,说明驱动没问题。如果列表里没有设备,先换一条数据线试试——很多所谓的“连不上”其实是数据线只支持充电不支持数据传输。另外,手机上的USB模式别选“仅充电”,选“文件传输(MTP)”模式。

Delphi IDE里真机部署很简单:菜单栏选择Run -> Run Without Debugging,IDE检测到设备后会把APK推送安装并自动启动。如果设备列表空白,先检查上面的adb devices能否看到。

4.2 从编译到APK生成

部署调试没问题后,可以了解下正式APK的构建路径。在IDE里执行Project -> Build,编译成功后在工程目录的Android64\Debug下会生成APK文件。Debug版本默认用debug签名,能装但上不了应用商店。

正式包需要Release签名,配置在Project -> Options里找到Provisioning页面,可以新建一个签名配置:

  • 生成keystore用JDK自带的keytool命令,在JDK的bin目录下执行
keytool -genkey -v -keystore release.keystore -alias delphi -keyalg RSA -keysize 2048 -validity 3650
  • 然后在IDE的Provisioning里导入这个keystore,填上密码和别名
  • 切换到Release构建配置,就能打出签名版APK

签名这一环节最容易被忽视的是有效期,很多朋友为了省事填了一年,一年后应用市场提醒证书过期只能重新签名上架。我个人建议直接填20年以上,反正keytool免费,不用白不用。

5. 常见问题速查:我踩过的坑

环境配置类的坑,网上问来问去就那几个,我把高频问题整理成一张表,遇到直接对照着解决,比重新翻论坛高效得多。

报错/现象原因解决方案
Invalid license / 无效的授权说明IDE授权过期,或SDK Manager与License Manager不同步在Help -> License Manager里重新激活;若仍报错,用安装程序Repair修复
SDK Manager空白,Add后闪退路径含中文/空格,或者PlatformSDKs目录权限不足迁移到纯英文默认路径,以管理员身份运行IDE
编译报错找不到android.jarProject Options里的SDK版本与platforms目录下实际安装的API不匹配在SDK Manager补装对应API,或把工程SDK版本改成已安装版本
Unsupported class file major version 61JDK版本太高(常见于装了JDK17)换回JDK 11,并确认SDK Manager里Java SDK路径指向JDK 11
liblog.so not found / cannot find -llogLibrary搜索路径里没加NDK系统库在Project Options的Library路径加入NDK的usr/lib目录
adb devices看不到设备数据线/驱动/USB模式问题换数据线,装OEM驱动,手机选择文件传输模式
aapt: error: file failed to compile杀毒软件拦截构建工具把PlatformSDKs目录加入杀软白名单,或暂时退出

5.2 几条独家心得

除了上面的常规排查,我自己摸索出三个特别实用的习惯,分享给你:

第一,配置完SDK后,第一时间新建一个空工程,选Android 64位目标,编译一次默认模板。这个动作能验证整个工具链是否通畅,比直接开干老项目省心得多。因为老项目的资源、三方库、部署文件都可能引入新问题,别让环境问题混在业务问题里排查。

第二,配好环境后,把PlatformSDKs整个目录用压缩软件打包备份。下次换电脑或者系统重装,解压回去,在SDK Manager里重新Add一次路径就能用,节省大量下载时间。我换过两台机器,这招稳定省掉至少半小时。

第三,不要同时装多个版本的NDK。Delphi 121在识别NDK时优先认目录名里的版本号,多个NDK并存容易让IDE混乱。只留一个当前在用的,其他版本换个目录单独存着,不要放在PlatformSDKs里。

最后再提一个容易被忽略的小技巧:在Project Manager里可以右键目标平台选择“Add New Platform”来添加不同安卓架构,不用改工程代码就可以交叉编译出armeabi-v7a、arm64-v8a等多个架构包。但每新增一个架构就要检查一次Library路径是否包含对应架构的usr/lib目录,否则照样Link不过。这个细节在三方SDK适配的时候尤为重要,建议各位在正式给客户打包之前先全部架构编译一遍,别等交付时才手忙脚乱。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询