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

使用Eclipse的Libgdx项目如何集成Admob?(不迁移至Android Studio)

在Eclipse的LibGDX项目中集成AdMob(适配SDK 27.0.3)

我之前也在Eclipse里折腾过LibGDX集成AdMob,给你一步步说清楚适配你当前环境的操作:

一、配置AndroidManifest.xml

打开项目里的android模块,找到AndroidManifest.xml做以下修改:

  1. 添加必要权限(放在<manifest>标签内、<application>标签外):
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  1. 配置AdMob应用ID(放在<application>标签内):
<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="你的AdMob应用ID" />

提示:这个ID是你在AdMob后台创建应用时获取的,格式为ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy

  1. 可选:添加插屏广告所需的AdActivity(兼容旧版本SDK,保险起见可以加上):
<activity
    android:name="com.google.android.gms.ads.AdActivity"
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
    android:theme="@android:style/Theme.Translucent" />

二、添加Google Play服务广告依赖

你已经安装了Extras里的Google Play服务,在Eclipse里可以这样操作:

  1. 导入Google Play服务库:打开File > Import > Android > Existing Android Code Into Workspace,找到你SDK目录下的extras/google/google_play_services/libproject/google-play-services_lib,导入这个库项目。
  2. 关联到Android模块:右键你的LibGDX项目的android模块,选择Properties > Android,在Library区域点击Add,选中刚才导入的google-play-services_lib确认添加。

如果你用Gradle构建项目,也可以直接修改android模块的build.gradle,在dependencies块中添加:

compile 'com.google.android.gms:play-services-ads:12.0.1'

这个版本和SDK 27.0.3完全兼容,别用太高版本避免冲突。

三、编写跨平台广告交互逻辑

LibGDX是跨平台框架,我们需要在Android端实现广告功能,再通过接口让Core模块调用:

  1. 在Core模块创建广告接口AdsController.java:
public interface AdsController {
    void showBannerAd();
    void hideBannerAd();
    void showInterstitialAd();
    boolean isInterstitialAdLoaded();
}
  1. 在Android模块的AndroidLauncher.java实现该接口并初始化广告:
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.InterstitialAd;
import android.widget.RelativeLayout;
import android.view.View;

public class AndroidLauncher extends AndroidApplication implements AdsController {
    private AdView bannerAd;
    private InterstitialAd interstitialAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
        
        // 初始化Banner广告
        bannerAd = new AdView(this);
        bannerAd.setAdSize(AdSize.SMART_BANNER);
        bannerAd.setAdUnitId("你的Banner广告单元ID");
        
        // 初始化插屏广告
        interstitialAd = new InterstitialAd(this);
        interstitialAd.setAdUnitId("你的插屏广告单元ID");
        loadInterstitialAd();
        
        // 将广告控制器传递给游戏核心类
        initialize(new MyGame(this), config);
        
        // 将Banner添加到布局
        RelativeLayout layout = new RelativeLayout(this);
        View gameView = getView();
        layout.addView(gameView);
        
        RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT
        );
        adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
        adParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
        
        layout.addView(bannerAd, adParams);
        setContentView(layout);
    }

    private void loadInterstitialAd() {
        AdRequest adRequest = new AdRequest.Builder().build();
        interstitialAd.loadAd(adRequest);
    }

    @Override
    public void showBannerAd() {
        runOnUiThread(() -> {
            AdRequest adRequest = new AdRequest.Builder().build();
            bannerAd.loadAd(adRequest);
        });
    }

    @Override
    public void hideBannerAd() {
        runOnUiThread(() -> bannerAd.setVisibility(View.GONE));
    }

    @Override
    public void showInterstitialAd() {
        runOnUiThread(() -> {
            if (interstitialAd.isLoaded()) {
                interstitialAd.show();
                // 展示后重新加载下一条插屏
                loadInterstitialAd();
            }
        });
    }

    @Override
    public boolean isInterstitialAdLoaded() {
        return interstitialAd.isLoaded();
    }
}
  1. 在Core模块的游戏主类MyGame.java中调用广告接口:
public class MyGame extends Game {
    private AdsController adsController;

    public MyGame(AdsController adsController) {
        this.adsController = adsController;
    }

    @Override
    public void create() {
        // 游戏启动时显示Banner广告
        adsController.showBannerAd();
        
        // 示例:关卡结束后显示插屏广告
        if (adsController.isInterstitialAdLoaded()) {
            adsController.showInterstitialAd();
        }
    }
}

四、ProGuard混淆配置(如果启用)

如果项目开启了ProGuard,需要在proguard-rules.pro中添加以下规则,避免广告代码被混淆:

-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**

最后提醒

测试时一定要用AdMob官方测试广告单元ID,比如Banner用ca-app-pub-3940256099942544/6300978111,插屏用ca-app-pub-3940256099942544/1033173712,不要用正式ID测试,否则会被AdMob限流。

内容的提问来源于stack exchange,提问作者Hasib Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:48:34