一、app 签名
此篇文章针对小白而写,大神选择性参考
1. 创建 keystore
说实话但凡网上有一篇能解决问题的文章,我也不至于费这么大心思写下这篇文章。接下来我会带着你们一步步踩坑直至把apk打包出来。
如果您有现有 keystore,请跳至下一步。如果没有,请通过在运行以下命令来创建一个:
keytool -genkey -v -keystore D:\my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
下面会解释这段代码什么意思,首先不出意外的话你们会看到下面这个东西。
因为keytool是jdk里面的,所以我们要到特定的路径下才能执行上面那段代码,没有jdk的话,自行网上搜索下载,然后我的路径是在这里:
回退到bin目录下,按住shift鼠标右键,在此处打开powershell窗口。
再次输入刚刚那段代码后你会看到:
笔者直接加上.\也就是:
.\keytool -genkey -v -keystore D:\my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
然后不出意外你会看到:
现在解释一下刚刚那段代码怎么回事:
-
-keystore 参数后的值: my-release-key.keystore, 表示一会儿要生成的那个签名文件的名称;请先保存好这个名称,因为后面发布项目期间会用到它。(注意系统默认路径是c盘你可能会没有权限,所以我加了个 D:\,你也可以改成其他盘,比如D:\my-release-key.keystore)
-
-alias 参数后面的值:my-key-alias,后续发布项目期间也会用到,因此也需要保存好这个参数值;注意:这个参数的值可以根据自己的需要进行自定制。
-
当运行这个命令的时候,需要输入一系列的参数,和相关的口令的密码,一定要保存好相关的密码,后期会用到。
-
当生成了签名之后,这个签名,默认保存到了自己的用户目录下 D:\my-release-key.keystore。
2.输入密钥口令
两次输入密钥口令,其他的不用管直接回车,最后按y确认,如图:
上面代码应该还有一个回车,反正最后一个是y就对了。
然后你会在d盘你刚刚设置的位置找到:my-release-key.keystore这个文件。
3.放置密钥
把刚刚那个密钥文件copy 到 android/app 目录下
因为要给你们演示,为了方便我直接拖到桌面了。这是我的目录,你要打包哪个工程,你就找你自己的工程。注意:保持 keystore 文件的私密性;不要将它加入到公共源代码控制中(最好的方式,是将 keystore 文件添加到 .gitignore 忽略文件。
4.引用应用程序中的 keystore
创建一个名为 /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
- password from previous step,这个是你刚刚你密钥密码
- key这个就是你刚刚密钥文件的名字,你如果按照我说的去做的话就是my-key-alias
- location of the key store file, e.g. /Users//key.jks,这个是整个文件名my-release-key.keystore
5.在 gradle 中配置签名
通过编辑 /android/app/build.gradle 文件为您的应用配置签名:
- 替换:
android {
为:
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
2.替换:
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
为:
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
注意别搞错了,别多一个括号少一个括号,笔者就是少了一个括号,最后报错了
到了这一步所有的配置都好了,最后开始打包apk了。
二、打包apk
-
到你的工程目录下打开命令窗口,比如我的工程是在命令窗口输入:cd Desktop\myapp\apptwo就到我的工程目录下了,然后输入:flutter build apk 激动人心的时刻到了:
为什么笔者坚持要写下这篇文章,因为遇到太多坑了。
Error: Unable to find git in your PATH.意思是你没有配置git环境变量。
在座的各位应该都下了git吧,作为一个程序员必备的,如果没有的话,就先去网上找教程下载一个,然后在环境变量path里添加下方路径:(注意:位置不一定是我下面这个,得看你安装git得具体位置) -
C:\Program Files (x86)\Git\bin
-
C:\Program Files (x86)\Git\mingw64\libexec\git-core
然后还是不行:那就再加一个 -
C:\Windows\System32
-
有人会问加在用户变量还是系统变量,你先加在系统变量吧,不行的话就用户变量也加上。还是不行?打开命令窗口执行下echo %PATH% 应该就生效了,也就是关掉cmd命令窗口再重新打开的意思。
-
最后在:项目位置\build\app\outputs\apk\release这个目录就能找到打包的apk了。