Flutter Android端启动白屏问题的解决

问题描述

Flutter 应用在 Android 端上启动时会有一段很明显的白屏现象,白屏的时长由设备的性能决定,设备性能越差,白屏时间越长。

问题分析

其实启动白屏的问题在Android原生应用上也是一个常见问题,大致是因为从用户点击 Launcher Icon 到应用首页显示之间,Android 系统在完成应用的初始化工作,其流程如下:

在 Flutter Android 端上,白屏的问题会更加严重,因为除了 Android 应用启动耗时外,还增加了 Flutter 初始化耗时。

直到 Flutter 渲染出第一帧内容,用户才能感知到App启动完成。

解决方案

解决方案很简单,Android原生的白屏问题可以通过为 Launcher Activity 设置 windowBackground 解决,而 Flutter 也是基于此办法,同时优化了 Flutter 初始化阶段的白屏问题(覆盖一个launchView),只用两步设置便能解决 Flutter 中白屏问题。

在项目的 android/app/src/main/res/mipmap-xhdpi/ 目录下添加闪屏图片;

打开 android/app/src/main/res/drawable/launch_background.xml 文件,这个文件就是闪屏的背景文件,具体如何设置可以查阅 Android Drawable,我在 demo 中的设置如下:

<!– Modify this file to customize your launch splash screen —

<!– You can insert your own image assets here —
<item
android:bottom=”84dp”
<bitmap
android:src=”@mipmap/launch_image” /
</item
</layer-list

效果对比如下:

白屏

白屏优化

以上就是本文的全部内容,希望对大家的学习有所帮助。

Unable to find method ‘org.gradle.api.file.ProjectLayout.fileProperty

1. 错误描述

Unable to find method ‘org.gradle.api.file.ProjectLayout.fileProperty(Lorg/gradle/api/provider/Provider;)Lorg/gradle/api/file/RegularFileProperty;’
org.gradle.api.file.ProjectLayout.fileProperty(Lorg/gradle/api/provider/Provider;)Lorg/gradle/api/file/RegularFileProperty;

Gradle’s dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

Re-download dependencies and sync project (requires network)
The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.

Stop Gradle build processes (requires restart)
Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.

In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.

 

2. 错误原因:

gradle版本问题,项目中使用的gradle版本没有,下载的时候网络连接出现问题;

3. 解决方案

打开项目根目录下,把gradle版本修改成本地有的版本,然后反正别的项目中gradle/wrapper直接覆盖当前项目的gradle,然后Sync Project;

Studio运行错误报错-Manifest merger failed with multiple errors, see logs

FAQ:
> Manifest merger failed with multiple errors, see logs

解决:

此问题产生原因大概有三个

# 第一,清单文件有错,这种错不会在编译时指出来,当然as中还是可以看到的, 边上的红色就是了

# 第二,引入的三方包存在相同的label icon 等名字
解决:清单文件用tools

manifest头声明tools作用域:
xmlns:tools="http://schemas.android.com/tools"
然后在application中用tools替代报错的节点,如:
解决办法是 到你的「processDebugManifest」module的Mainifest里面加入这样的语句:

    <application
        android:allowBackup="true"
        android:label="@string/app_name"
        tools:replace="label,allowBackup">

意思是如果merge manifest,就用别处的allowBackup和label值替换这里的。


# 第三 也就是上面有人说的sdk版本冲突
解决:一种是修改targetSdkVersion 为一致或者不冲突
第二种,如果因为某些原因不能修改,在清单文件中强制合并

 

Ref:
Android Studio使用心得 – 常见问题集锦 – 大熊的Android开发之旅 – 博客频道 – CSDN.NET
http://blog.csdn.net/codezjx/article/details/38669939

Manifest merger failed with multiple errors, see ? – 知乎
https://www.zhihu.com/question/36645628

Android Studio 多渠道打包遇到的问题总结 – 不正经啊不正经
https://my.oschina.net/u/1995545/blog/404535

android studio使用错误排查记录 – – 博客频道 – CSDN.NET
http://blog.csdn.net/wojiaopanpan/article/details/50151513

Manifest Merger – Android Studio Project Site
http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger