Delphi 10.2.2升级至10.2.3后TBannerAd异常,恢复Android库默认致编译失败
我之前也碰到过一模一样的问题:把Delphi从10.2.2升级到10.2.3后,调用TBannerAd.LoadAd直接触发了异常。后来才搞明白,是因为Tokyo 10.2.3更新了Google Play Services及其关联库,新版本的库和原来的AdMob组件调用逻辑不兼容导致的。
一开始我也跟着建议,右键项目管理器里的Android Libraries节点执行了Revert System Files to Default,结果倒好,直接编译失败,一堆[Exec Error...]的报错,简直雪上加霜。后来折腾了好一阵,总结出几个可行的修复方法:
手动对齐Google Play Services库版本
- 打开项目管理器,展开Android Libraries节点,找到
com.google.android.gms:play-services-ads这个库 - 右键它选
Properties,在属性窗口里把版本号改成10.2.2默认的11.8.0(这个版本和旧的AdMob组件逻辑适配) - 顺便检查其他Google Play Services相关的库(比如
play-services-base、play-services-basement),确保它们的版本和ads库完全一致,避免版本冲突
- 打开项目管理器,展开Android Libraries节点,找到
彻底清理项目缓存
- 先关掉Delphi,找到项目文件夹下的
Android子目录,把里面的bin和obj文件夹全删掉 - 重新打开Delphi,点顶部菜单的
Project > Clean,清理完再重新编译项目,很多编译错误都是缓存残留导致的
- 先关掉Delphi,找到项目文件夹下的
回退AdMob组件文件(终极方案)
如果上面的方法都不行,可以试试把10.2.2安装目录里的AdMob相关组件文件(比如AdMob.pas、FMX.AdMob.Android.pas这些)复制到10.2.3的对应目录里——记得先把10.2.3的原文件备份好,避免出问题没法恢复。替换完再重新编译项目,基本能解决组件和新库的适配问题
另外还要提一句,升级后Android SDK的配置也得检查下,确保你SDK里安装的Google Play Services和Google Repository版本,和你在项目里设置的库版本是匹配的,不然还是容易出问题。
内容的提问来源于stack exchange,提问作者bLight
相关产品推荐
相关产品推荐

