启动白屏
Flutter 应用在 Android 端上启动时会有一段很明显的白屏现象,白屏的时长由设备的性能决定,设备性能越差,白屏时间越长. 然后这个白屏是可以控制的,在Android代码中的style.xml中有这样一段代码:
代码语言:javascript复制<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
其中的launch_background就是这个白屏的图片的,详情可查看drawable目录下的具体文件:
launch_background.xml
代码语言:javascript复制<?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节点下有如下配置:
代码语言:javascript复制<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
中修改应用名称
<application
android:name="io.flutter.app.FlutterApplication"
android:icon="@mipmap/ic_launcher"
android:label="青鸽管家">
</application>
对应的LOGO也就是修改mipmap/ic_launcher
对应位置的图片即可
应用签名
生成或使用之前的签名文件demo.jks
keytool -genkey -v -keystore demo.jks -keyalg RSA -keysize 2048 -validity 1000000 -alias demo
把文件放在android
=>app
=>build.gradle
的同级
打开android
=>app
=>build.gradle
找到buildTypes
,同级上面添加如下配置
signingConfigs {
debug {
storeFile file("demo.jks")
storePassword "123456"
keyAlias "demo"
keyPassword "123456"
}
release {
storeFile file("demo.jks")
storePassword "123456"
keyAlias "demo"
keyPassword "123456"
}
}
buildTypes
修改如下
buildTypes {
release {
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.debug
}
}
应用打包
打包命令
代码语言:javascript复制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就输入
代码语言:javascript复制/bin/zsh
如果没配置变量就根据自己的Shell不同 按下文配置,配置过的就不用再看下文了。
查看配置是否生效
代码语言:javascript复制echo $ANDROID_HOME
配置属性
打开配置文件
Bash
代码语言:javascript复制open ~/.bash_profile
Zsh
代码语言:javascript复制open ~/.zshrc
添加如下配置
代码语言:javascript复制export ANDROID_HOME=/Users/zhangjian/Library/Android/sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
保存后执行下面命令让配置立即生效
代码语言:javascript复制source ~/.bash_profile
或者
代码语言:javascript复制source ~/.zshrc
修改后记得重启Android Studio
xxx:verifyReleaseResources
个别依赖包下载不回来报错 xxx:verifyReleaseResources
解决方法:升级依赖的版本
打包后网络请求报错
原因: 正式版的安卓app 需要设置允许网路权限
解决:androidappsrcmainAndroidManifest.xml,manifest
和 androidappsrcprofileAndroidManifest.xml,manifest
里添加这段代码,
然后在打包就解决这问题了
代码语言:javascript复制<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" />