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

Flutter开发Android应用模拟器正常,实机运行白/黑屏卡住如何解决

问题根因

从运行日志可直接定位问题:应用启动时main.dart第25行调用Cloud Firestore查询接口时触发了cloud_firestore/permission-denied权限异常,且该异常未被捕获,直接阻断了Flutter的初始化渲染流程,导致应用停留在Android原生启动窗口:系统深色模式下原生窗口默认背景为黑色,浅色模式下默认背景为白色,对应你观察到的黑屏/白屏现象。
模拟器可正常运行通常是因为模拟器曾登录过Google账号、或Firestore安全规则针对测试环境做过豁免,实体设备没有对应权限凭证,所以触发了权限拒绝。

修复方案

  • 给Firestore相关操作添加异常捕获
    找到main.dart第25行附近的Firestore查询代码,用try-catch包裹异常逻辑:
void main() async {
  // 确保Flutter初始化完成
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  try {
    // 此处替换为你原有的Firestore查询逻辑
    var querySnapshot = await FirebaseFirestore.instance.collection('genres').get();
    // 后续业务处理逻辑
  } catch (e) {
    // 自行处理异常,比如打印日志、弹窗提示用户
    print("数据请求失败: $e");
  }
  runApp(const MyApp());
}
  • 调整Firestore安全规则
    登录Firebase控制台,调整genres集合的访问规则,确保应用有权限访问对应数据,测试阶段可临时放开规则验证问题:
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // 测试用规则,正式上线前请替换为符合业务要求的权限控制逻辑
    match /{document=**} {
      allow read, write: if true;
    }
  }
}
  • (可选)配置自定义启动页
    可在Android原生层配置自定义启动页,替换系统默认的黑白启动窗口,优化用户体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:45:07