Flutter应用使用flutter_launcher_icons后安装时自动锁屏问题求助
问题分析与解决方案
你遇到的问题是:使用flutter_launcher_icons包配置应用图标后,安装到物理设备时会自动锁屏,即使注释掉原生代码中锁屏弹窗相关的FLAG_SHOW_WHEN_LOCKED和FLAG_TURN_SCREEN_ON标记,问题仍然存在。
以下是几个可能的排查方向和解决办法:
1. 检查flutter_launcher_icons生成的AndroidManifest.xml
这个包在生成图标时可能会自动修改AndroidManifest.xml的配置,比如在activity标签中添加了和锁屏、屏幕唤醒相关的属性。建议对比使用该包前后的AndroidManifest.xml文件,重点查看:
- 是否新增了
android:turnScreenOn="true"或类似属性 - 是否添加了不必要的权限(比如
WAKE_LOCK)
如果发现异常配置,手动移除后重新构建安装。
2. 彻底清理构建缓存
缓存残留可能导致旧的异常配置没有被替换,执行以下命令清理后重新生成图标并构建:
flutter clean flutter pub get flutter pub run flutter_launcher_icons:main flutter build apk --debug # 或根据需要构建其他版本
3. 排查图标资源问题
尝试更换一个已知正常的图标文件(比如使用Flutter默认的图标),重新运行flutter_launcher_icons生成图标,再安装到设备测试。如果问题消失,说明原图标文件(assets/images/logo.png)可能存在格式或尺寸异常,导致系统处理时触发锁屏行为。
4. 调整flutter_launcher_icons版本
该包的某些版本可能存在bug,尝试升级到最新稳定版,或者降级到之前使用正常的版本,再测试问题是否解决。可以在pubspec.yaml中指定版本号,比如:
flutter_launcher_icons: ^0.13.1 # 替换为合适的版本
附你提供的相关代码:
原生代码(MainActivity.java)
// in onCreate of the MainActivity.java getWindow().addFlags( WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON );
pubspec.yaml中的flutter_launcher_icons配置
flutter_launcher_icons: android: true ios: false image_path: "assets/images/logo.png" min_sdk_android: 21 web: generate: true image_path: "assets/images/logo.png" background_color: "#FFFFFF" theme_color: "#FFFFFF" windows: generate: false macos: generate: false
内容的提问来源于stack exchange,提问作者Mahsein
相关产品推荐
相关产品推荐

