Flutter开发10-发布时注意事项

启动白屏

Flutter 应用在 Android 端上启动时会有一段很明显的白屏现象,白屏的时长由设备的性能决定,设备性能越差,白屏时间越长.
然后这个白屏是可以控制的,在Android代码中的style.xml中有这样一段代码:

1
2
3
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">@drawable/launch_background</item>
</style>

其中的launch_background就是这个白屏的图片的,详情可查看drawable目录下的具体文件:

launch_background.xml

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />

<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

可以看得很清楚了,默认新建flutter时就是白色的启动页了,然后下面还有注释,我们可以自己添加其他的启动图,当然更换之后就好了

另外需要注意的是在AndroidManifest.xml中MainActivity节点下有如下配置:

1
2
3
<meta-data
android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
android:value="true" />

这里就设置了启动flutter的main.dart之前一直显示我们设置的launch_background,

如果我们设置这个值为 false,那么在启动flutter代码之前就是黑屏了.

应用名称和LOGO

Flutter并不是设置一处名称或Logo,然后不同平台就相应生成对应的文件或代码,我们需要在对应平台的目录下修改

比如Android就在android=>app=>src=>main=>AndroidManifest.xml中修改应用名称

1
2
3
4
5
<application
android:name="io.flutter.app.FlutterApplication"
android:icon="@mipmap/ic_launcher"
android:label="青鸽管家">
</application>

对应的LOGO也就是修改mipmap/ic_launcher对应位置的图片即可

应用签名

生成或使用之前的签名文件demo.jks

1
keytool -genkey -v -keystore demo.jks -keyalg RSA -keysize 2048 -validity 1000000 -alias demo

把文件放在android=>app=>build.gradle的同级

打开android=>app=>build.gradle

找到buildTypes,同级上面添加如下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
signingConfigs {
debug {
storeFile file("demo.jks")
storePassword "123456"
keyAlias "demo"
keyPassword "123456"
}
release {
storeFile file("demo.jks")
storePassword "123456"
keyAlias "demo"
keyPassword "123456"
}
}

buildTypes修改如下

1
2
3
4
5
6
7
8
buildTypes {
release {
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.debug
}
}

应用打包

打包命令

1
flutter build apk

打包成功后的文件路径

build/app/outputs/apk/release/app-release.apk

SDK location not found.

SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

这种错误的原因是Shell在执行命令的时候找不到变量,所以首先先确认自己用的Shell

打开Android Studio的配置 找到Tools=>Terminal

设置Shell Path

比如我用的Zsh就输入

1
/bin/zsh

如果没配置变量就根据自己的Shell不同 按下文配置,配置过的就不用再看下文了。

查看配置是否生效

1
echo $ANDROID_HOME

配置属性

打开配置文件

Bash

1
open ~/.bash_profile

Zsh

1
open ~/.zshrc

添加如下配置

1
2
3
export ANDROID_HOME=/Users/zhangjian/Library/Android/sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools

保存后执行下面命令让配置立即生效

1
source ~/.bash_profile

或者

1
source ~/.zshrc

修改后记得重启Android Studio

xxx:verifyReleaseResources

个别依赖包下载不回来报错 xxx:verifyReleaseResources

解决方法:升级依赖的版本

打包后网络请求报错

原因: 正式版的安卓app 需要设置允许网路权限

解决:android\app\src\main\AndroidManifest.xml,manifestandroid\app\src\profile\AndroidManifest.xml,manifest 里添加这段代码,

然后在打包就解决这问题了

1
2
3
4
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />