AdMob聚合指南 - uc-union/union-ads-sdk-demo GitHub Wiki

介绍

详见Google AdMob官网

接入指南

下载Google Repository

SDK Manager

SDK Manager

在 Android SDK Manager 窗口中,选择 Extras 文件夹下的 Google Repository,然后按 **Install Packages(安装程序包)**并接受许可协议以开始下载。如果 **Install Packages(安装程序包)**按钮不能使用,请不要担心。这恰恰说明您已经拥有最新版本,因此无需在 SDK Manager 中进行任何操作。

国内特色问题

Android SDK更新相关问题可以参考 这里

对于上文提到的Google Reponsitory,可通过 百度云盘下载 获取,下载解压后将解压出的整个文件夹复制或者移动到 your sdk 根目录下下,如果已经存在 extras 文件夹就替换掉。

Android Studio / Gradle (强烈推荐)

添加dependencies依赖(通常是在app/build.gradle中定义),可以参考 app/build.gradle

dependencies {
    compile 'com.google.android.gms:play-services-ads:9.0.0'
}

Eclipse

注意: 如果开发者是使用Android Studio,可以跳过本节

  1. <android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/ 下的导入到当前开发项目即可。

  2. AndroidManifest.xml中添加下述内容

    <!-- Include required permissions for Google Mobile Ads to run-->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    
    <application android:label="@string/app_name" >
        ...
        <!--This meta-data tag is required to use Google Play Services.-->
        <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
        <!--Include the AdActivity configChanges and theme. -->
        <activity android:name="com.google.android.gms.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|
                                   uiMode|screenSize|smallestScreenSize"
            android:theme="@android:style/Theme.Translucent" />
    </application>
  3. proguard.pro中添加下述内容

    -keep class * extends java.util.ListResourceBundle {
        protected java.lang.Object[][] getContents();
    }
    
    # Keep SafeParcelable value, needed for reflection. This is required to support backwards
    # compatibility of some classes.
    -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
        public static final *** NULL;
    }
    
    # Keep the names of classes/members we need for client functionality.
    -keep @interface com.google.android.gms.common.annotation.KeepName
    -keepnames @com.google.android.gms.common.annotation.KeepName class *
    -keepclassmembernames class * {
        @com.google.android.gms.common.annotation.KeepName *;
    }
    
    # Needed for Parcelable/SafeParcelable Creators to not get stripped
    -keepnames class * implements android.os.Parcelable {
        public static final ** CREATOR;
    }
    
    # Needed when building against pre-Marshmallow SDK.
    -dontwarn android.security.NetworkSecurityPolicy
    
    # Keep metadata about included modules.
    -keep public class com.google.android.gms.dynamite.descriptors.** {
      public <fields>;
    }
    
    # Keep the implementation of the flags api for google-play-services-flags
    
    -keep public class com.google.android.gms.flags.impl.FlagProviderImpl {
      public <fields>; public <methods>;
    }
    

测试

展示测试广告

在开发阶段,建议使用测试广告以避免产生非法展示,只需在广告请求加上HASH_ID,代码如下:

AdRequest request =
    AdRequest.newBuilder().testDeviceId("YOUR_HASH_ID").put("YOUR_PUB").build();

其中YOUR_HASH_ID可以在设备首次加载广告时,在日志中获取,如下图:

google-test-device-id

测试广告截图

如果一切顺利,测试广告会如下面截图所示:

  • 横幅广告

    google-test-banner-example

  • 插屏广告

    google-test-interstitial-example

后续步骤

⚠️ **GitHub.com Fallback** ⚠️