Flutter开发-发布时注意事项

2020-06-02 15:02:08 浏览数 (1)

启动白屏

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中修改应用名称

代码语言:javascript复制
<application
    android:name="io.flutter.app.FlutterApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="青鸽管家">
</application>

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

应用签名

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

代码语言:javascript复制
keytool -genkey -v -keystore demo.jks -keyalg RSA -keysize 2048 -validity 1000000 -alias demo

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

打开android=>app=>build.gradle

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

代码语言:javascript复制
signingConfigs {
    debug {
        storeFile file("demo.jks")
        storePassword "123456"
        keyAlias "demo"
        keyPassword "123456"
    }
    release {
        storeFile file("demo.jks")
        storePassword "123456"
        keyAlias "demo"
        keyPassword "123456"
    }
}

buildTypes修改如下

代码语言:javascript复制
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,manifestandroidappsrcprofileAndroidManifest.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" />

0 人点赞