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_
相关产品推荐
相关产品推荐

