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

Flutter现有应用适配华为AppGallery:Firebase依赖替换技术指导咨询

Flutter应用适配华为应用市场(替换Firebase服务指南)

针对你用Flutter开发的应用,要适配华为应用市场,需用**华为移动服务(HMS)**替代Firebase的各项功能,以下是具体替换方案和代码修改指导:

一、核心准备工作

  1. 在华为开发者控制台创建应用,生成并配置签名证书指纹,下载agconnect-services.json文件,放到Flutter项目的android/app目录下。
  2. 修改项目级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/' }
            // 保留原有其他仓库
        }
    }
    
  3. 修改应用级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();
      

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) {
        // 处理消息逻辑
      });
      

4. Cloud Firestore/Firebase Database → HMS Cloud DB

  • 替换依赖:在pubspec.yaml中移除cloud_firestore和firebase_database,添加:
    huawei_clouddb: ^3.1.0+300
    
  • 代码修改示例:
    1. 先定义实体类(对应Firestore的集合结构):
      @HmsCloudDBObject()
      class User {
        @HmsField(propertyName: 'id', isPrimaryKey: true)
        String? id;
        @HmsField(propertyName: 'name')
        String? name;
      
        User({this.id, this.name});
      }
      
    2. 初始化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();
      

三、其他注意事项

  • 所有HMS服务需在华为开发者控制台对应应用中开启(Account Kit、Push Kit、Cloud DB等)。
  • 可通过条件编译实现双环境适配(同时支持GMS和HMS),示例:
    import 'dart:io';
    
    if (Platform.isAndroid) {
      // 检测设备是否支持HMS,执行对应逻辑;否则执行Firebase逻辑
    }
    
  • 打包时确保签名证书与控制台配置一致,否则HMS服务无法正常调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:30:55