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

测试时模拟器无法加载Banner广告,错误代码3的解决求助

解决AdMob自定义Banner广告加载失败(错误码3)问题

问题描述

在模拟器测试应用Banner广告时无法显示,出现以下错误日志:

I/Ads: Ad failed to load : 3
W/ConnectionStatusConfig: Dynamic lookup for intent failed for action: com.google.android.gms.ads.service.CACHE
W/ConnectionStatusConfig: Dynamic lookup for intent failed for action: com.google.android.gms.ads.service.START

使用官方Demo广告单元可正常显示,但自定义广告单元无法加载。

相关代码与配置

Java代码

package com.devdroid.adsample;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.MobileAds;

public class MainActivity extends AppCompatActivity {

    AdView adView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        adView = findViewById(R.id.adView);

        MobileAds.initialize(this);

        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);
    }
}

XML布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.google.android.gms.ads.AdView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/adView"
        app:adSize="BANNER"
        app:adUnitId="@string/banner_ad_unit_id"
        android:layout_alignParentBottom="true" />
</RelativeLayout>

Manifest配置

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.AdSample"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="@string/app_id"
            />
    </application>

</manifest>

Strings.xml

<resources>
    <string name="app_name">AdSample</string>
    <string name="app_id">XXXXXXXX</string>
    <string name="banner_ad_unit_id">XXXXXXXX</string>
</resources>

解决方案

1. 校验自定义广告单元配置

  • 登录AdMob后台,确认自定义Banner广告单元处于启用状态,未启用的单元会直接返回加载失败。
  • 核对广告单元类型与代码中adSize参数是否匹配,确保都是Banner类型,避免尺寸不兼容。

2. 解决错误码3(无填充)问题

错误码3表示广告请求无可用填充,可按以下步骤处理:

  • 确认strings.xml中的app_id与AdMob后台注册的应用ID完全一致,不要误填成广告单元ID。
  • 新创建的广告单元需要数小时的初始化时间,等待一段时间后再测试。
  • 在模拟器测试时,添加测试设备ID到AdMob后台测试设备列表,或在代码中通过AdRequest.Builder().addTestDevice("你的设备ID")添加测试设备,避免非测试流量被限制。

3. 修复Google Play服务警告

日志中的Intent查找失败警告,多因模拟器Google Play服务异常导致:

  • 使用包含完整Google服务的系统镜像(如Google APIs镜像),并将Google Play服务更新到最新版本。
  • 确保项目依赖的play-services-ads版本与模拟器中的Google Play服务版本兼容,建议使用最新稳定版。

4. 优化代码逻辑

  • 调整初始化逻辑,确保AdMob初始化完成后再加载广告:
MobileAds.initialize(this, initializationStatus -> {
    AdRequest adRequest = new AdRequest.Builder().build();
    adView.loadAd(adRequest);
});
  • 添加广告加载失败监听,获取详细错误信息便于排查:
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.LoadAdError;
import android.util.Log;

// 在loadAd前添加监听
adView.setAdListener(new AdListener() {
    @Override
    public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
        super.onAdFailedToLoad(loadAdError);
        Log.e("AdLoadError", "错误码:" + loadAdError.getCode() + ",详情:" + loadAdError.getMessage());
    }
});

5. 检查网络环境

  • 确认模拟器已连接稳定网络,未开启代理或VPN导致广告请求被拦截。

内容的提问来源于stack exchange,提问作者Vibhav Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:45:04