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

Flutter集成IronSource遇Activity null错误,求正确配置方法

Flutter集成IronSource时"Activity is null"异常的解决方法

问题背景

我正在Flutter中集成IronSource,使用的依赖版本为:
ironsource_mediation: 1.1.0、google_mobile_ads: 2.3.0

已完成以下配置:

  1. app/build.gradle配置:
implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1' 
implementation 'com.google.android.gms:play-services-basement:18.1.0'
implementation 'com.google.android.gms:play-services-appset:16.0.2'

implementation 'com.ironsource.sdk:mediationsdk:7.2.7' 
// Add AdMob and Ad Manager Network
implementation 'com.google.android.gms:play-services-ads:21.4.0' 
implementation 'com.ironsource.adapters:admobadapter:4.3.34'
// Add Facebook Network
implementation 'com.ironsource.adapters:facebookadapter:4.3.38'
implementation 'com.facebook.android:audience-network-sdk:6.12.0'
  1. 项目build.gradle配置:
repositories {google()mavenCentral()maven { url 'https://android-sdk.is.com/' }}
  1. AndroidManifest.xml配置:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<uses-permission android:name="com.android.vending.BILLING"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />


    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value= "@string/android__admob_ads_id_key" /> 

运行时出现以下错误:

E/flutter (12382): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)]
Unhandled Exception: PlatformException(ERROR, Activity is null, null,
null) E/flutter (12382): #0 StandardMethodCodec.decodeEnvelope
message_codecs.dart:653 E/flutter (12382): #1
MethodChannel._invokeMethod platform_channel.dart:315 E/flutter
(12382): E/flutter (12382): I/flutter
(12382): PlatformException(ERROR, Activity is null, null, null)

解决方案

该异常核心原因是IronSource SDK无法获取Android Activity实例,需通过以下步骤修复:

1. 绑定Activity到IronSource插件

修改Flutter项目的android/app/src/main/kotlin/[你的包名]/MainActivity.kt(或Java版MainActivity.java),重写configureFlutterEngine方法传递Activity实例:

Kotlin版本

import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import com.ironsource.adapters.flutter.IronSourceMediationPlugin

class MainActivity : FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        IronSourceMediationPlugin.setActivity(this)
    }
}

Java版本

import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import com.ironsource.adapters.flutter.IronSourceMediationPlugin;

public class MainActivity extends FlutterActivity {
    @Override
    public void configureFlutterEngine(FlutterEngine flutterEngine) {
        super.configureFlutterEngine(flutterEngine);
        IronSourceMediationPlugin.setActivity(this);
    }
}

2. 调整IronSource初始化时机

确保在Flutter引擎初始化完成后再调用初始化,建议在State的initState中执行:

import 'package:flutter/material.dart';
import 'package:ironsource_mediation/ironsource_mediation.dart';

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    initIronSource();
  }

  Future<void> initIronSource() async {
    try {
      // 替换为你的IronSource App Key
      await IronSourceMediation.initialize(appKey: "YOUR_IRONSOURCE_APP_KEY");
    } catch (e) {
      debugPrint("IronSource初始化失败: $e");
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text("IronSource集成")),
        body: const Center(child: Text("集成测试")),
      ),
    );
  }
}

3. 清理重建项目

执行以下命令清理缓存并重新构建:

flutter clean
flutter pub get
cd android && ./gradlew clean && cd ..
flutter run

额外注意事项

  • 确认ironsource_mediation与原生SDK版本匹配,当前1.1.0对应7.2.7是兼容的;
  • Android 13+需动态申请POST_NOTIFICATIONS权限,否则可能影响广告展示;
  • 检查AndroidManifest.xml中无重复权限或meta-data配置,避免冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:47:41