Firebase/Flutter Play Integrity初始化代码应放置在何处?
Firebase App Check Play Integrity 初始化问题解决指南
1. 先补全必要依赖
Flutter 端依赖
在项目根目录的pubspec.yaml里的dependencies块中添加:
dependencies: firebase_core: ^最新版本号 firebase_app_check: ^最新版本号
执行flutter pub get拉取依赖。
Android 端依赖
打开android/app/build.gradle,在dependencies下添加:
implementation "com.google.firebase:firebase-appcheck-playintegrity:最新版本号"
(版本号可参考Firebase官方最新稳定版,当前常用16.0.0左右)
2. 初始化代码的正确位置
推荐方案:自定义 Application 类
- 在
android/app/src/main/java/[你的项目包名]/路径下创建MyApplication.java,代码如下:
package com.your.package.name; // 替换成你实际的包名 import android.app.Application; import com.google.firebase.FirebaseApp; import com.google.firebase.appcheck.FirebaseAppCheck; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); FirebaseApp.initializeApp(this); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance()); } }
- 打开
android/app/src/main/AndroidManifest.xml,在<application>标签里加上android:name=".MyApplication",示例:
<application android:name=".MyApplication" android:label="你的应用名" android:icon="@mipmap/ic_launcher"> <!-- 其他原有内容 --> </application>
备选方案:MainActivity 中初始化
如果不想自定义Application,也可以把代码放在MainActivity.java的onCreate方法里,要放在Flutter初始化之前:
package com.your.package.name; import androidx.annotation.NonNull; import io.flutter.embedding.android.FlutterActivity; import io.flutter.embedding.engine.FlutterEngine; import com.google.firebase.FirebaseApp; import com.google.firebase.appcheck.FirebaseAppCheck; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; public class MainActivity extends FlutterActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FirebaseApp.initializeApp(this); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance()); } // 其他原有方法... }
3. Flutter 端的配合初始化
在main.dart里还要完成Firebase核心和App Check的初始化:
import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_app_check/firebase_app_check.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // 激活App Check,指定Android用Play Integrity await FirebaseAppCheck.instance.activate( androidProvider: AndroidProvider.playIntegrity, // web端需要的话填reCAPTCHA密钥,移动端可以留空 ); runApp(const MyApp()); }
常见坑点排查
- 包名不匹配:确保Java文件的包名和AndroidManifest里的包名完全一致
- 版本冲突:检查Firebase相关依赖的版本是否兼容,尽量用同大版本的依赖
- 控制台未配置:要先在Firebase控制台的App Check设置里启用Play Integrity提供商,并且配置好应用的签名信息
内容的提问来源于stack exchange,提问作者Bernhard
相关产品推荐
相关产品推荐

