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

Jetpack Compose中如何检测测试设备避免预启动测试误触横幅广告?

检测预启动测试设备以屏蔽横幅广告的方法
  • 识别Play Console预启动测试设备特征
    Play Console的预启动测试设备有专属系统标识,你可以通过读取这些属性判断是否为测试设备:
// Android Java 示例
public static boolean isPreLaunchTestDevice() {
    return Build.TAGS != null && Build.TAGS.contains("test-keys") 
           || Build.VERSION.INCREMENTAL.contains("test")
           || (Build.MANUFACTURER.equals("Google") && Build.MODEL.startsWith("Pixel") && Build.SERIAL.startsWith("8X"));
}
// Android Kotlin 示例
fun isPreLaunchTestDevice(): Boolean {
    return Build.TAGS?.contains("test-keys") == true 
           || Build.VERSION.INCREMENTAL.contains("test")
           || (Build.MANUFACTURER == "Google" && Build.MODEL.startsWith("Pixel") && Build.SERIAL.startsWith("8X"))
}

检测到符合条件的设备后,直接跳过横幅广告的加载逻辑即可。

  • 检测Firebase Test Lab测试环境
    Firebase Test Lab的设备会在系统层面设置特定标识,读取这个标识就能判断:
// Android Java 示例
public static boolean isFirebaseTestLabDevice(Context context) {
    String testLabFlag = Settings.System.getString(context.getContentResolver(), "firebase.test.lab");
    return "true".equals(testLabFlag);
}
// Android Kotlin 示例
fun Context.isFirebaseTestLabDevice(): Boolean {
    val testLabFlag = Settings.System.getString(contentResolver, "firebase.test.lab")
    return testLabFlag == "true"
}
  • 搭配广告平台的测试模式兜底
    如果不想完全屏蔽广告,也可以给测试设备强制启用广告平台的测试模式(比如AdMob),这样只会展示无计费的测试广告,避免误触产生真实扣费:
// AdMob 测试模式配置示例
AdRequest adRequest = new AdRequest.Builder()
    .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
    // 结合前面的设备检测,动态添加测试设备或强制开启测试模式
    .build();
  • 注意:不要仅依赖Build类型
    虽然Debug包可以直接屏蔽广告,但预启动测试大多用的是Release包,所以Build类型只能作为辅助判断,不能单独用来处理预启动测试场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:32:44