如何打包发布flutter项目

步骤1 创建 keystore(如果已经创建,请跳过)

  • Windows+R,cmd打开终端,运行:
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
  • 输入必要信息
    在这里插入图片描述
  • 在用户目录下 C:\Users\用户名目录\my-release-key.keystore,生成了签名
    在这里插入图片描述

步骤2 将的签名证书 copy 到 android/app 目录下

在这里插入图片描述

步骤3 引用应用程序中的 keystore

创建一个名为 <app dir>/android/key.properties 的文件,其中包含对密钥库的引用:

storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=key
storeFile=<location of the key store file, e.g. /Users/<user name>/key.jks>


//示例:
storePassword=000000
keyPassword=000000
keyAlias=my-key-alias
storeFile=my-release-key.keystore

步骤4 在 gradle 中配置签名

通过编辑 <app dir>/android/app/build.gradle 文件为您的应用配置签名:

  • 在android{}前面加上:
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

在这里插入图片描述

  • 在buildTypes {前面加上:
    在这里插入图片描述
signingConfigs {
    
    
    release {
    
    
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['storePassword']
        }
}
buildTypes {
    
    
    release {
    
    
        signingConfig signingConfigs.release
    }
}

步骤6 修改 App 名称和图标

修改应用名称

打开位于 <app dir>/android/app/src/main/ 中的 AndroidManifest.xml 文件,找到 application 节点,编辑 application 标签的android:label, 修改应用的名称。
在这里插入图片描述

修改应用图标

  • 使用 Hbuilder 工具快速生成应用图标;
  • <app dir>/android/app/src/main/res/ 目录中,将图标文件放入使用配置限定符命名的文件夹中。把自己生成的图标,按照规范的名称和大小,覆盖 Flutter 的默认图标。
    在这里插入图片描述
    在这里插入图片描述

步骤5 构建一个发布版(release)APK

  • 在项目根目录下中打开终端(或者直接在编辑器的终端中),运行
flutter build apk

在这里插入图片描述

步骤6 安装apk

  • 安装在模拟器
运行
flutter install
  • 安装在真机

在项目的flutter_tets\build\app\outputs\apk\release目录下可以看到apk,复制到手机上之后,正常安装即可。在这里插入图片描述

踩坑

真机发布之后,无法发送网络请求。Android应用需要进行网络请求时,需要在AndroidManifest中注册网络权限。

  • 1
 <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" />
  • 2 在AndroidManifest中的application添加一句
android:usesCleartextTraffic="true"

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44307065/article/details/107687942