就像在Android中为adMob

时间:2019-04-14 15:51:16

标签: android gradle android-gradle admob build.gradle

build.gradle文件中的清单占位符使您可以指定可以在manifest文件中使用的常量,就像这样。

  manifestPlaceholders = [admob_app_id: "ca-app-pub-3940256099942544~3347511713", banner_id: "ca-app-pub-3940256099942544/6300978111"]

,然后在清单文件中

 <meta-data
   android:name="com.google.android.gms.ads.APPLICATION_ID"
   android:value="${admob_app_id}" />

对于布局xml文件,这似乎不起作用

    <com.google.android.gms.ads.AdView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/publisherAdView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    ads:adSize="BANNER"
    ads:adUnitId="${banner_id}" />

有没有一种方法可以根据构建配置动态更改banner id。我曾尝试以编程方式进行此操作,但是除非在XML中声明adSizeadUnitId,否则admob引发的抱怨会不断。

1 个答案:

答案 0 :(得分:1)

您可以使用the resValue() method创建带有横幅ID的字符串资源,然后在布局中引用它:

android {
  ...
  buildTypes {
    release {
      resValue("string", "banner_id", "foo")
      ...
    }
    debug {
      resValue("string", "banner_id", "bar")
      ...
    }
  }
}
ads:adUnitId="@string/banner_id"