打包前要做的
1.更换图标
andriod–》app–app–》src—》main-》Java----》res–》minpmap
其实这个打包的坑还是比较多的,官方文档显然是站在大神级程序员的角度写的,所以如果你看文档,特别是前端,那基本是打不成功的。
不要怕,我这里就详细的把打包的过程和坑给大家演示一下。
1.配置APP的图标想配置APP的图片,你需要找到下面的目录:
项目根目录/android/app/src/main/res/
进入之后你会看到很多mipmap-为前缀命名的文件夹,后边的是像素密度,可以看出图标的分辨率。
-
mdpi (中) ~160dpi
-
hdpi (高) ~240dip
-
xhdpi (超高) ~320dip
-
xxhdpi (超超高) ~480dip
-
xxxhdpi (超超超高) ~640dip
将对应像素密度的图片放入对应的文件夹中,图片记得用png格式,记得名字要统一,才能一次性进行配置。
2.修改APP名称在这个文件下
android\app\src\main\AndroidManifest.xml
AndroidManifest.xml 文件
这个文件主要用来配置APP的名称、图标和系统权限,所在的目录在:
项目根目录/android/app/src/main/AndroidManifest.xml
android:label="flutter_app" //配置APP的名称,支持中文
android:icon="@mipmap/ic_launcher" //APP图标的文件名称
3.生成 keystore
这里的坑挺多的,小伙伴一定要注意。官方写的非常简单,只要在终端运行如下代码就可以成功,但事实是报错。
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
报错截图如下:
根本找不到这个目录,真的很坑,其实我们只是没有配置环境变量。但是为了一个包配置环境变量是不知道的。
这时候可以用下面的命令找到keytool.exe的位置。
flutter doctor -v
这时候你直接拷贝命令并进行输入,但这里也有个坑,就是如果文件夹中间带有空空,你需要用带引号扩上。
D:\Program\Android\'Android Studio'\jre\bin\keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
这就可以了吗?那你就太天真了,还是会报错。
这个错误的主要问题是目录不存在和没有写权限,所以我们要更换一个有写权限的目录。我们把命令改成了下面的形式。
D:\Program\Android\'Android Studio'\jre\bin\keytool -genkey -v -keystore D:\key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
这时候就可以创建成功了。
如果创建不成功,显示:
keytool 错误: java.lang.Exception: 未生成密钥对, 别名 已经存在
那么你的D盘下面肯定之前 已经生成了key.jks文件,删除即可
你的D盘下面就会有一个Jks的文件,记住这个文件不能共享给任何人。
有了这个key.jks文件后,可以到项目目录下的android
文件夹下,创建一个名为key.properties的文件,并打开粘贴下面的代码。
storePassword= //输入上一步创建KEY时输入的 密钥库 密码
keyPassword= //输入上一步创建KEY时输入的 密钥 密码
keyAlias=key
storeFile= //key.jks的存放路径
我的文件最后是这样的
storePassword=666666
keyPassword=666666
keyAlias=key
storeFile=
storePassword=123123
keyPassword=123123
keyAlias=key
storeFile=D:/key.jks
这个工作中也不要分享出去哦,这个Key就算生成成功了。
配置key注册
key生成好后,需要在build.gradle文件中进行配置。这个过程其实很简单,就是粘贴复制一些东西,你是不需要知道这些文件的具体用处的。
第一项:
进入项目目录的/android/app/build.gradle文件,在
android{
}
这一行前面,加入如下代码:
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android{
}
把如下代码进行替换
buildTypes {
release {
signingConfig signingConfigs.debug
}
}
替换成的代码:
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
生成apk
直接在终端中输入:
flutter build apk
这时候就打包成功了,剩下的安装过程我就省略,不作过多的介绍了。
报错处理:
https://blog.csdn.net/u011809714/article/details/54860979
keytool -list -v -keystore “D:\key.jks”
修改密码
keytool -storepasswd -keystore "D:\key.jks"
keytool -keypasswd -keystore "D:\key.jks" -alias key
Flutter 项目打包 - Android
创建签名
-
下载并安装JDK,详情问度娘
-
创建签名
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
keytool -genkey -alias android.jks -keyalg RSA -storetype PKCS12 -validity 36500 -keystore android.jks
# 创建一个证书文件,名为 android.jks,别名也为 android.jks,加密算法采用 RSA,有效期为 100年,行业标准格式 PKCS12。
注:
-genkey 生成文件
-alias 别名
-keyalg 加密算法
-validity 有效期
-keystore 文件名
-storetype PKCS12 行业标准格式 PKCS12
123456789
-
按照指令依次填写要求的内容,最后填写完成输入 y 确认信息
-
查看证书的具体信息
keytool -list -v -keystore "android.jks"
应用配置签名信息
- 在应用的android 创建文件 key.properties
=========== 粘贴如下代码 ==================
storePassword= //输入上一步创建KEY时输入的 密钥库 密码
keyPassword= //输入上一步创建KEY时输入的 密钥 密码
keyAlias=android.jks // 别名
storeFile= //key.jks的存放路径
=========== 示例 ==================
storePassword=123456
keyPassword=123456
keyAlias=android.jks
storeFile=C:/Users/tingt/Desktop/android.jks
- 进入项目目录的/android/app/build.gradle文件,在文件顶部加入如下代码
// 寻找签名配置文件
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
=================== 替换前代码 =================
buildTypes {
release {
signingConfig signingConfigs.debug
}
}
=================== 替换后代码 =================
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
打包、安装应用
- 打包
flutter build apk
- 安装
adb install C:\Users\tingt\Desktop\flutter_app\build\app\outputs\apk\release\app-release.apk
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']}
}
buildTypes {
release {
signingConfig signingConfigs.release }
debug {
signingConfig signingConfigs.debug }}}