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

如何为Codename One项目正确接入Admob扩展?

正确接入Codename One Admob全屏扩展步骤

1. 统一通过POM配置引入(别混用设置程序下载)

直接在项目根目录的pom.xml里加下面的依赖,绝对别用CN1设置程序的扩展页面下载,不然会搞出配置冲突:

<dependency>
    <groupId>com.codenameone</groupId>
    <artifactId>admobfullscreen</artifactId>
    <version>LATEST</version>
    <type>pom</type>
</dependency>

加完后跑mvn clean install刷新依赖,确保本地仓库能拉到构件。

2. 解决Android本地构建找不到GoogleAPIs的问题

本地用Android Studio构建时,得在android/build.gradle里加Google Maven仓库,不然拿不到Google服务依赖:
在buildscript和allprojects的repositories节点里都加上:

maven { url 'https://maven.google.com' }

同时,android/build.gradle里要引入Google服务插件:

dependencies {
    classpath 'com.google.gms:google-services:4.3.10'
}

最后在android/app/build.gradle末尾加一行:

apply plugin: 'com.google.gms.google-services'

3. 解决云构建后Genymotion里广告弹出冻结的问题

  • 代码里要正确处理线程:广告加载是网络操作,得放后台线程,显示广告要切回EDT(事件调度线程),不然会卡死UI:
    Display.getInstance().callSerially(() -> {
        // 初始化Admob
        AdmobFullscreen.init("你的Admob应用ID");
    });
    
    // 加载广告放后台
    new Thread(() -> {
        if (AdmobFullscreen.isInterstitialReady()) {
            Display.getInstance().callSerially(() -> {
                AdmobFullscreen.showInterstitial();
            });
        }
    }).start();
    
  • 给Genymotion装完整的Google Play服务:有些镜像默认不带,得手动装对应版本的GMS包,不然Admob SDK跑不起来。
  • 先用测试广告单元ID:比如插屏测试IDca-app-pub-3940256099942544/1033173712,避免真实广告审核问题导致加载失败。

核心注意点

  • 别同时用设置程序和手动POM加扩展,会搞出依赖冲突,直接导致构件找不到。
  • 所有和UI相关的Admob操作(比如显示广告)必须回EDT执行,后台只做加载。
  • 云构建时,确保codenameone_settings.properties里的android.playServicesVersion设成兼容版本,比如17.0.0。

内容的提问来源于stack exchange,提问作者Stefan Cohn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:52:20