在XML中设置变量,就像在Android中为AdMob设置清单占位符一样。

3

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}" />

有没有办法根据构建配置动态更改横幅广告ID。我已经尝试以编程方式做到这一点,但是AdMob除非在xml中声明adSizeadUnitId,否则会不断抱怨。

有没有办法根据构建配置动态更改横幅广告ID?我已经尝试在程序中进行更改,但是AdMob除非在XML中声明adSizeadUnitId,否则会持续报错。


您可以根据构建变体在源集中拥有不同版本的布局资源。或者,如果库支持,则可以使用通过resValue在Gradle中设置的字符串资源。 - CommonsWare
1个回答

3
您可以使用“resValue()”方法创建一个包含您的横幅广告ID的字符串资源,然后在布局中引用它:

这里提供了更多相关信息。

android {
  ...
  buildTypes {
    release {
      resValue("string", "banner_id", "foo")
      ...
    }
    debug {
      resValue("string", "banner_id", "bar")
      ...
    }
  }
}

ads:adUnitId="@string/banner_id"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接