Flutter打包成Android应用

234 阅读2分钟

上一篇是Electron的文章,我们有了pc端的应用了,接下来我们解决安卓端,这里我使用flutter,因为它可以多端,更方便点

生成签名

生成一个用于签名 Flutter 应用程序的 keystore 文件

keytool -genkey -v -keystore <请自己取名字>.keystore -alias <请自己取名字> -keyalg RSA -keysize 2048 -validity 10000

解释:

  1. keytool: Java 提供的密钥和证书管理工具。
  2. -genkey: 生成密钥对(公钥和私钥)。
  3. -v: 详细输出模式,会显示更多信息。
  4. -keystore <请自己取名字>.keystore: 指定要创建的密钥库文件名。
  5. -alias <请自己取名字>: 为密钥对指定一个别名。
  6. -keyalg RSA: 指定密钥算法为 RSA。
  7. -keysize 2048: 指定密钥长度为 2048 位。
  8. -validity 10000: 设置证书的有效期为 10000 天。

注意:

  • 两个名字要不同
  • 去掉尖括号

后文使用的是下面的例子

keytool -genkey -v -keystore genai_android.keystore -alias genai -keyalg RSA -keysize 2048 -validity 10000

删除签名

keytool -delete -alias genai -keystore genai_android.keystore

按照提示填写相关信息,并记住密钥库路径和别名。(在下方配置签名时填写

配置签名

打开android/app目录下的build.gradle文件,添加签名配置,要与生成的一致:

android {
    ...
    signingConfigs {
        release {
            keyAlias "genai" // 设置你的 alias 名称
            keyPassword "genai_android" // 设置你的密钥库密码
            storeFile file('../../keystore/genai_android.keystore') //生成签名的位置
            storePassword "genai_android" // 设置你的密钥库密码
        }
    }
    buildTypes {
        release {
           // 使用上述配置的签名配置来签署APK
            signingConfig = signingConfigs.release
             //由于应用是内部使用所以我就不混淆了
            // 是否启用代码压缩以减少APK大小,设置为false表示不启用
            minifyEnabled false
            // 是否删除未使用的资源以减少APK大小,设置为false表示不启用
            shrinkResources false
            // 指定ProGuard规则文件,用于代码混淆和优化
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

请求后端

如果牵扯到请求后端接口,那我们需要配置网络权限

app/src/main/AndroidManifest.xml中的manifest标签内添加网络权限

<manifest xmlns:android="http://schemas.android.com/apk/res/android"> 
    ...
    <uses-permission android:name="android.permission.INTERNET"/>
    ...
</manifest>

打包发布版APK

生成发布版APK

flutter build apk --release

在控制台找到生成对应的包即可