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

Flutter项目中从JSON读取值配置到AndroidManifest.xml

在Flutter中从本地JSON读取AdMob应用ID并注入AndroidManifest.xml

方案一:通过Gradle动态替换Manifest占位符(满足Manifest配置需求)

1. 修改AndroidManifest.xml,设置占位符

打开android/app/src/main/AndroidManifest.xml,将AdMob的meta-data值替换为占位符:

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

2. 编写Gradle脚本读取JSON值

打开android/app/build.gradle,在文件顶部添加读取JSON的函数,然后在defaultConfig中配置占位符:

// 读取assets中的JSON文件,提取AdMob应用ID
def getAdMobAppId() {
    def jsonFilePath = "../assets/jsons/text.json"
    def jsonFile = file(jsonFilePath)
    
    if (!jsonFile.exists()) {
        throw new GradleException("JSON文件未找到:${jsonFile.path}")
    }
    
    def jsonContent = new groovy.json.JsonSlurper().parse(jsonFile)
    return jsonContent.someValue ?: ""
}

android {
    defaultConfig {
        // 其他配置...
        manifestPlaceholders = [
            admob_app_id: getAdMobAppId()
        ]
    }
}

打包时Gradle会自动将占位符替换为JSON中someValue字段的值。

方案二:Flutter代码中直接传入APP_ID(无需修改Manifest)

如果不需要在Manifest中配置meta-data,可以直接在初始化AdMob时传入读取到的ID,更灵活:

1. 读取本地JSON文件

创建工具函数读取assets/jsons/text.json中的值:

import 'dart:convert';
import 'package:flutter/services.dart';

Future<String> fetchAdMobAppId() async {
  try {
    final jsonString = await rootBundle.loadString('assets/jsons/text.json');
    final jsonData = json.decode(jsonString) as Map<String, dynamic>;
    return jsonData['someValue'] as String;
  } catch (e) {
    print('读取AdMob ID失败: $e');
    return '';
  }
}

2. 初始化AdMob时使用该ID

依赖google_mobile_ads包,初始化时传入读取到的APP_ID:

import 'package:google_mobile_ads/google_mobile_ads.dart';

void initAdMob() async {
  final appId = await fetchAdMobAppId();
  if (appId.isNotEmpty) {
    await MobileAds.instance.initialize(
      initializationSettings: InitializationSettings(
        android: AndroidInitializationSettings(appId),
      ),
    );
  }
}

注意事项

  • 确保pubspec.yaml中已注册assets路径:
    flutter:
      assets:
        - assets/jsons/text.json
    
  • 检查JSON文件格式是否正确,someValue字段需为字符串类型的AdMob应用ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 06:35:05