Flutter 打包安卓应用 APK
添加启动图标
- 使用ps制作图标,像素为1024x1024
- 使用图标工厂,生成各个分辨率适配的图标
- 将解压的图标复制到 <app dir>/android/app/src/main/res/ 目录下
App签名
- 运行命令生成密钥
keytool -genkey -v -keystore D:\Resource\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload
- 迁移到行业标准格式 PKCS12
keytool -importkeystore -srckeystore D:\Resource\upload-keystore.jks -destkeystore D:\Resource\upload-keystore.jks -deststoretype pkcs12
- 创建 [project]/android/key.properties 文件
storePassword=<上一步骤中的密码>
keyPassword=<上一步骤中的密码>
keyAlias=upload
storeFile=D:/Resource/upload-keystore.jks
注意:上面的storeFile一定不要写反斜杠,在打包的时候会报错。
- 修改 [project]/android/app/build.gradle 文件,在 android 代码块之前新增内容
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
...
}
- 替换 buildTypes 代码块
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
检查 app manifest 文件
修改<app dir>/android/app/src/main/AndroidManifest.xml 文件
- 修改应用名称
android:label="应用名称"
- 添加网络访问权限
<uses-permission android:name="android.permission.INTERNET"/>
<application
...
检查构建配置
修改 <app dir>/android/app/build.gradle 文件
defaultConfig {
applicationId "" // 唯一的appid
}
修改版本号
修改 pubspec.yaml 文件
version: 0.0.4+4
其中,+ 前面是显示版本号,后面是内部版本号
在打包时,会自动根据该值更新 android/local.properties 文件中对应的值
构建APK
运行命令
flutter build apk --split-per-abi
会在 build/app/outputs/flutter-apk 下生成apk文件
通常使用其中的app.apk作为安装文件
安装
在手机连接到电脑的情况下,运行命令 flutter install 可以将构建出来的APK安装的手机上。
本文来自博客园,作者:Bin_x,转载请注明原文链接:https://www.cnblogs.com/Bin-x/p/15632897.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2013-12-02 SQL Server中in与exist效率比较