You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 10.2.3编译的Android应用无法在联想Tab3 7 Essential启动

Delphi 10.2.3 Tokyo编译应用无法在联想Tab3 7 Essential启动的问题分析与排查建议

我之前也碰到过这类设备特定的兼容性坑,先帮你把已知信息理清楚,再给几个实际可尝试的排查方向:

核心问题梳理

  • 不管是正式应用、官方Demo还是新建的空白项目,用Delphi 10.2.3 Tokyo编译后,全都没法在联想Tab3 7 Essential上启动,启动阶段会在Android.JNIBridge的dispatchToNative()函数里触发异常
  • 三星、华为等其他品牌设备完全正常,只有这款联想平板出问题
  • 版本差异很关键:用Delphi 10.1 Berlin或者10.2 Tokyo(初始版本)编译的应用能正常运行,问题是从10.2.2版本开始出现,一直延续到10.2.3
  • 异常触发的具体代码行:AType := AContext.GetType(AObject.ClassInfo);

可尝试的排查方向

1. 核对Android版本与编译配置的匹配度

联想Tab3 7 Essential默认是Android 6.0 Marshmallow,你可以重点检查:

  • Delphi 10.2.2和10.2.3对Android 6.0的编译配置有没有变动?比如默认目标SDK版本、最小SDK版本是否调整过
  • 对比10.2.0和10.2.3的Project > Options > Deployment > Android下的设置,尤其是是否开启了某些新的JNI相关特性

2. 深挖JNI桥接层的版本变更

从10.2.0到10.2.3,Embarcadero对Android的JNI桥接代码做了不少优化和修复,dispatchToNative()和GetType()相关逻辑大概率有改动:

  • 可以在异常触发的位置手动加日志,输出AObject.ClassInfo的具体值、AContext的状态,看看是不是这款设备的JNI环境对某些类信息的处理有特殊逻辑
  • 尝试修改Android.JNIBridge.pas里的这段代码,加个异常捕获和 fallback 逻辑,比如当GetType()调用失败时,换一种方式获取类型信息

3. 排查设备的定制系统限制

联想的低端平板经常有定制化的Android系统,可能存在特殊限制:

  • 先给设备更到最新系统补丁,再测试应用能不能启动
  • 试试关闭设备的某些安全限制,比如未知来源应用权限、调试模式,看是否能绕过异常
  • 找个同Android版本的其他联想设备测试,确认是不是Tab3 7 Essential独有的问题

4. 临时降级编译方案

如果暂时找不到根本原因,可以先试试临时解决办法:

  • 保留10.2.3的开发环境,但替换成10.2.0的Android编译组件(注意备份原文件,避免兼容性问题)
  • 针对这款设备单独用10.2.0编译发布版本

目前来看,这个问题应该是Delphi 10.2.2及以上版本的JNI桥接层,和联想Tab3 7 Essential的定制系统不兼容导致的,建议重点盯着版本间JNI相关的代码变更,以及设备系统的特殊处理逻辑。

内容的提问来源于stack exchange,提问作者Michał

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:13:01