Delphi 11运行原Delphi 10.4.2开发的Android应用时出现tcp:64311错误的解决咨询
解决Delphi 11 Android调试出现
tcp:64311: cannot resolve name错误的方案 我之前在迁移Delphi旧项目到11版本时,碰到过几乎一模一样的Android调试连接问题,结合你做的多版本SDK/NDK测试,给你几个针对性的排查和修复方案:
1. 重置ADB服务并手动配置端口转发
这个错误本质是调试器和设备之间的TCP连接失败,ADB端口转发异常是最常见的原因:
- 先关闭Delphi IDE,打开命令提示符执行:
adb kill-server adb start-server - 然后检查当前的ADB转发规则:
adb forward --list - 如果没有看到
tcp:64311相关的条目,手动添加调试端口映射:
这条命令是把本地64311端口映射到设备的调试抽象端口,是Delphi调试Android的标准映射规则。adb forward tcp:64311 localabstract:android.debug
2. 调整Delphi调试器网络配置
Delphi 11的调试器默认设置可能存在兼容性问题,手动调整一下:
- 打开Delphi的
Tools > Options > Debugger > Android Debugger - 把Debug connection type从默认的
Auto切换为USB(如果用USB连接设备) - 确保Host name设置为
localhost,不要留空或填写其他地址;如果之前勾选了Use specific port,可以取消勾选让系统自动分配,或者手动指定64311 - 点击
Apply保存设置后,重启IDE再测试。
3. 清理项目与IDE缓存
旧项目的配置缓存和IDE缓存经常会导致奇怪的兼容性问题:
- 删除项目根目录下的
*.dproj.local文件,以及Android文件夹下的bin、obj生成目录,然后重新编译项目 - 关闭Delphi IDE,找到IDE缓存目录(默认路径是
C:\Users\<你的用户名>\AppData\Roaming\Embarcadero\BDS\21.0,Delphi 11对应BDS 21.0),删除其中的Cache文件夹,重启IDE后重新配置SDK/NDK。
4. 检查设备的调试权限与网络安全设置
部分设备的系统限制会拦截调试连接:
- 确保设备的开发者选项中,USB调试、安装未知应用(对应你当前的IDE安装包)已开启,同时开启停用ADB授权超时(部分品牌设备有这个选项,防止连接超时断开)
- 如果设备的网络安全策略阻止明文调试连接,可以临时修改项目的
AndroidManifest.xml:
在<application>标签中添加:
然后在项目的android:networkSecurityConfig="@xml/network_security_config"res\xml目录下创建network_security_config.xml文件,内容如下:
这个配置允许明文调试连接,解决系统对本地调试端口的拦截问题。<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> </trust-anchors> </base-config> </network-security-config>
5. 匹配官方推荐的SDK/NDK版本
你测试了多个NDK版本,但Delphi 11有明确的推荐版本,不要混用:
- 官方推荐的NDK版本是NDK r21e(21.3.6528147),可以直接从Google的NDK存档下载这个特定版本,替换当前的NDK
- SDK方面,建议使用Android 11 (API 30),同时搭配SDK Build Tools 30.0.3,保持版本匹配,不要混用不同API级别的组件。
6. 排除防火墙/杀毒软件的拦截
Windows防火墙或第三方杀毒软件经常会误拦截Delphi调试器的端口连接:
- 临时关闭Windows防火墙和杀毒软件,测试是否能正常调试
- 如果问题解决,把Delphi的
bds.exe(默认路径C:\Program Files (x86)\Embarcadero\Studio\21.0\bin\bds.exe)和ADB的adb.exe(SDK的platform-tools目录下)添加到防火墙的允许列表中。
按照这些步骤一步步排查,应该能解决tcp:64311: cannot resolve name的调试连接问题。我当时是通过重置ADB端口转发+清理IDE缓存解决的,你可以先从前面的步骤开始测试,不行再往下推进。
内容的提问来源于stack exchange,提问作者Mobius one
相关产品推荐
相关产品推荐

