Skip to content

flutter 打包 APP

1. 修改 App 名称

主要在两个地方进行修改

2. 添加网络权限

如果 App 没有涉及到联网步骤可以跳过这个步骤,本 App 进行了网络访问,故需要进行两 处设置:

代码如下:

xml
<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" />

3. 图标

可以借助 Ai 制作图标:

也可以是普通的 png 图片,进入网站: 图标工场 - 移动应用图标/启动图生成工具,一键生成所有尺寸的应用图标/启 动图 (wuruihong.com)

得到不同分辨率下的文件,如下:

接着下载下来并解压得到如下:

分别将之中的文件替换掉原来的文件,:

4. App 签名以及配置

生成安卓密钥

打开终端,输入:

sh
Keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

如下:

按下回车后:

由于作者是在项目开发工具 idea 中直接调用终端进行操作,生成的文件在项目根目录下,如下:

接下来将这个文件复制或者裁剪到 Android 中的 App 目录下,如下:

然后,在 android 目录下新建一个名为 key.properties 的文件,写入如下内容:

代码:

sh
storePassword=123456
keyPassword=123456
keyAlias=my-key-alias
storeFile=my-release-key.keystore

之后,在 build.gradle 中配置签名,进行如下操作:

android{ 进行替换:

替换前:

替换后:

代码:

java
  def keystorePropertiesFile = rootProject.file("key.properties")
  def keystoreProperties = new Properties()
  keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
  android {

接着继续替换该文件的一处:

替换前:

替换后:

代码:

sh
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
//signingConfig signingConfigs.debug
}
}

5. 生成 App

项目终端下输入:

sh
flutter build app

即可:

实际上这是一种生成不同种类系统架构都可以适用的 app 包,比较大,解决方法是输入:

sh
flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi

来分别构建不同架构的 app ,如下:

可以看出,这样生成 app 的大小几乎是之前方法的 1/3,市面上手机主要使用 armeabi 架构 的 appx86_64 多见于平板和模拟器

虽然打包后形成了文件,但是如果使用的开发工具时 idea 等时,可能不能看见 build 目录, 实际上 build 目录在根目录下,打开资源管理器即可看到,如下:

6. 打包 win 平台

终端输入:

sh
flutter build windows

7. 打包 web 平台

终端输入(以下三个中的一个,优选第一个):

sh
flutter build web
sh
flutter build web --web-renderer html
sh
flutter build web --web-renderer canvaskit

打包的结果在 build/web 中,

web 文件夹中启动终端,输入

sh
python3 -m http.server

或者

sh
py -m http.server

或者

sh
python -m http.server

之后在本地就可以访问 localhost:8000 就可以看到界面了

端口默认是 8000,也可以自定义端口

sh
py -m http.server xxx