Flutter现有应用适配华为AppGallery:Firebase依赖替换技术指导咨询
Flutter应用适配华为应用市场(替换Firebase服务指南)
针对你用Flutter开发的应用,要适配华为应用市场,需用**华为移动服务(HMS)**替代Firebase的各项功能,以下是具体替换方案和代码修改指导:
一、核心准备工作
- 在华为开发者控制台创建应用,生成并配置签名证书指纹,下载
agconnect-services.json文件,放到Flutter项目的android/app目录下。 - 修改项目级
android/build.gradle,添加华为Maven仓库:buildscript { repositories { maven { url 'https://developer.huawei.com/repo/' } // 保留原有其他仓库 } dependencies { classpath 'com.huawei.agconnect:agcp:1.6.0.300' // 保留原有其他依赖 } } allprojects { repositories { maven { url 'https://developer.huawei.com/repo/' } // 保留原有其他仓库 } } - 修改应用级
android/app/build.gradle,添加AGC插件:apply plugin: 'com.huawei.agconnect'
二、各Firebase依赖的HMS替代方案
1. Firebase Core → HMS Core基础配置
无需额外插件,完成上述准备工作后,HMS Core基础环境即配置完成,替代Firebase Core的初始化逻辑。
2. Firebase Auth → HMS Account Kit
- 替换依赖:在
pubspec.yaml中移除firebase_auth,添加:huawei_account: ^6.1.0+300 - 代码修改示例:
- 原Firebase邮箱登录:
final userCredential = await FirebaseAuth.instance.signInWithEmailAndPassword( email: email, password: password, ); - 替换为HMS Account Kit邮箱登录(推荐优先使用华为ID登录,更适配华为生态):
final AuthAccount authAccount = await AccountAuthService.signInWithEmail(email, password); // 获取用户唯一ID final String? userId = authAccount.getUid();
- 原Firebase邮箱登录:
3. Firebase Messaging → HMS Push Kit
- 替换依赖:在
pubspec.yaml中移除firebase_messaging,添加:huawei_push: ^6.1.0+300 - 代码修改示例:
- 原获取FCM Token:
final token = await FirebaseMessaging.instance.getToken(); - 替换为获取HMS Push Token:
final token = await Push.getToken(""); - 原消息监听:
FirebaseMessaging.onMessage.listen((RemoteMessage message) { // 处理消息逻辑 }); - 替换为HMS Push消息监听:
Push.onMessageReceived.listen((RemoteMessage message) { // 处理消息逻辑 });
- 原获取FCM Token:
4. Cloud Firestore/Firebase Database → HMS Cloud DB
- 替换依赖:在
pubspec.yaml中移除cloud_firestore和firebase_database,添加:huawei_clouddb: ^3.1.0+300 - 代码修改示例:
- 先定义实体类(对应Firestore的集合结构):
@HmsCloudDBObject() class User { @HmsField(propertyName: 'id', isPrimaryKey: true) String? id; @HmsField(propertyName: 'name') String? name; User({this.id, this.name}); } - 初始化Cloud DB并查询数据:
// 初始化Cloud DB实例 await CloudDB.createCloudDBZone(); // 查询User实体数据 final querySnapshot = await CloudDB.executeQuery(User.classType); final List<User> users = querySnapshot.snapshotObjects.map((e) => e as User).toList();
- 先定义实体类(对应Firestore的集合结构):
三、其他注意事项
- 所有HMS服务需在华为开发者控制台对应应用中开启(Account Kit、Push Kit、Cloud DB等)。
- 可通过条件编译实现双环境适配(同时支持GMS和HMS),示例:
import 'dart:io'; if (Platform.isAndroid) { // 检测设备是否支持HMS,执行对应逻辑;否则执行Firebase逻辑 } - 打包时确保签名证书与控制台配置一致,否则HMS服务无法正常调用。
内容的提问来源于stack exchange,提问作者Garth
相关产品推荐
相关产品推荐

