用flutter写好的项目如何打包成apk文件

一、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

  然后不出意外你会看到:
在这里插入图片描述
  现在解释一下刚刚那段代码怎么回事:

  

  1. -keystore 参数后的值: my-release-key.keystore, 表示一会儿要生成的那个签名文件的名称;请先保存好这个名称,因为后面发布项目期间会用到它。(注意系统默认路径是c盘你可能会没有权限,所以我加了个 D:\,你也可以改成其他盘,比如D:\my-release-key.keystore)
      

  2. -alias 参数后面的值:my-key-alias,后续发布项目期间也会用到,因此也需要保存好这个参数值;注意:这个参数的值可以根据自己的需要进行自定制。
      

  3. 当运行这个命令的时候,需要输入一系列的参数,和相关的口令的密码,一定要保存好相关的密码,后期会用到。
      

  4. 当生成了签名之后,这个签名,默认保存到了自己的用户目录下 D:\my-release-key.keystore。

2.输入密钥口令

  两次输入密钥口令,其他的不用管直接回车,最后按y确认,如图:
在这里插入图片描述
  上面代码应该还有一个回车,反正最后一个是y就对了。
  然后你会在d盘你刚刚设置的位置找到:my-release-key.keystore这个文件。

3.放置密钥

  把刚刚那个密钥文件copy 到 android/app 目录下

  因为要给你们演示,为了方便我直接拖到桌面了。这是我的目录,你要打包哪个工程,你就找你自己的工程。注意:保持 keystore 文件的私密性;不要将它加入到公共源代码控制中(最好的方式,是将 keystore 文件添加到 .gitignore 忽略文件。

扫描二维码关注公众号,回复: 12051445 查看本文章

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
  1. password from previous step,这个是你刚刚你密钥密码
  2. key这个就是你刚刚密钥文件的名字,你如果按照我说的去做的话就是my-key-alias
  3. location of the key store file, e.g. /Users//key.jks,这个是整个文件名my-release-key.keystore

5.在 gradle 中配置签名
  通过编辑 /android/app/build.gradle 文件为您的应用配置签名:

  1. 替换:
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

  1. 到你的工程目录下打开命令窗口,比如我的工程是在命令窗口输入:cd Desktop\myapp\apptwo就到我的工程目录下了,然后输入:flutter build apk 激动人心的时刻到了:
    在这里插入图片描述
      为什么笔者坚持要写下这篇文章,因为遇到太多坑了。
    Error: Unable to find git in your PATH.意思是你没有配置git环境变量。
      在座的各位应该都下了git吧,作为一个程序员必备的,如果没有的话,就先去网上找教程下载一个,然后在环境变量path里添加下方路径:(注意:位置不一定是我下面这个,得看你安装git得具体位置)

  2. C:\Program Files (x86)\Git\bin

  3. C:\Program Files (x86)\Git\mingw64\libexec\git-core
    然后还是不行:那就再加一个

  4. C:\Windows\System32

  5. 有人会问加在用户变量还是系统变量,你先加在系统变量吧,不行的话就用户变量也加上。还是不行?打开命令窗口执行下echo %PATH% 应该就生效了,也就是关掉cmd命令窗口再重新打开的意思。

  6. 最后在:项目位置\build\app\outputs\apk\release这个目录就能找到打包的apk了。

这是我的第一篇文章,也是很用心写了。最后祝大家中秋快乐,阖家幸福!

猜你喜欢

转载自blog.csdn.net/weixin_43899542/article/details/100729443