前期开发调试时一直都是在真机上运行的debug包,没有发现随机黑屏的问题,准备上架打release包后发现部分Android的机型会出现随机黑屏的问题,查了资料后说有以下原因:
1.混淆(未解决):
在android/app/build.gradle文件中添加以下配置
buildTypes {
release {
minifyEnabled false //关闭混淆
shrinkResources false //删除无用资源
signingConfig signingConfigs.release
...
}
}
2.关闭R8压缩,使用D8压缩(未解决):
在android/gradle.properties文件中增加
# 开启D8压缩
android.enableD8=true
# 关闭R8压缩
#android.enableR8=true
以上尝试后都没有解决问题,又考虑是否是Android和flutter生命周期不一致?项目使用了fishredux框架?
在android/app/src/main/kotlin/.../MainActivity.kt文件中写入Android原生的生命周期,重新编译后发现没执行这个文件,因为没有接触过Android原生,因此造成未执行的具体原因不清楚,但想来和生命周期不一致没关系。
将页面替换为flutter原生的写法不使用fishredux,重新编译后也没有解决问题。
到这里这个问题已经卡了我一周多了,没有报错无法定位问题,release也无法打断点,有点绝望,最后想实在不行就重构?那会不会是依赖或者环境的配置有问题?这样的话只能一个依赖一个依赖排查,重新搭环境看是哪里的问题,但着急上线哪有那么多时间真的想哭...。
我先排查了是否是依赖的问题,flutter create了一个新的项目,依次把原项目的依赖引入,发现依赖没问题,但这个新项目打release是没有黑屏问题的!那和原项目的区别就只在于入口

本文讲述了在开发Flutter应用时遇到的release包在部分Android机型上随机黑屏的问题。尝试了混淆配置、D8压缩、调整生命周期等方法未果。最终发现问题是由于`main`文件中关于屏幕尺寸监听的代码导致,通过在`runApp`前确保WidgetsFlutterBinding初始化,并参考Stack Overflow上的建议修改代码,成功解决了黑屏和页面错乱的问题。
最低0.47元/天 解锁文章
2199

被折叠的 条评论
为什么被折叠?



