P21. Flutter客户端如何打包apk

到现在为止,我相信小伙伴都能做出一些漂亮的页面了,也有了想要安装到手机上的冲动,这时候就需要我们进行打包,本文我们就学学Android客户端如何打包apk。

其实这个打包的坑还是比较多的,官方文档显然是站在大神级程序员的角度写的,所以如果你看文档,特别是前端,那基本是打不成功的。

不要怕,我这里就详细的把打包的过程和坑给大家演示一下。

配置APP的图标

想配置APP的图片,你需要找到下面的目录:

项目根目录/android/app/src/main/res/

进入之后你会看到很多mipmap-为前缀命名的文件夹,后边的是像素密度,可以看出图标的分辨率。

配置APP的图标

  • mdpi (中) ~160dpi
  • hdpi (高) ~240dip
  • xhdpi (超高) ~320dip
  • xxhdpi (超超高) ~480dip
  • xxxhdpi (超超超高) ~640dip

将对应像素密度的图片放入对应的文件夹中,图片记得用png格式,记得名字要统一,才能一次性进行配置。

AndroidManifest.xml 文件

这个文件主要用来配置APP的名称、图标和系统权限,所在的目录在:

项目根目录/android/app/src/main/AndroidManifest.xml

android:label="flutter_app"   //配置APP的名称,支持中文
android:icon="@mipmap/ic_launcher" //APP图标的文件名称

生成 keystore

这里的坑挺多的,小伙伴一定要注意。官方写的非常简单,只要在终端运行如下代码就可以成功,但事实是报错。

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

flutter命令生成 keystore报错

根本找不到这个目录,真的很坑,其实我们只是没有配置环境变量。但是为了一个包配置环境变量是不知道的。

这时候可以用下面的命令找到keytool.exe的位置。

flutter doctor -v

flutter配置环境变量

这时候你直接拷贝命令并进行输入,但这里也有个坑,就是如果文件夹中间带有空空,你需要用单引号扩上。

假设我们keytool路径是这样的:

D:\Program\Android\Android Studio\jre\bin\

这个时候你就需要把Android Studio用单引号括起来:

D:\Program\Android\'Android Studio'\jre\bin\

我本地是这样的:

D:\androidStudio\jre\bin\keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

这就可以了吗?那你就太天真了,还是会报错。

flutter命令生成 keystore报错

这个错误的主要问题是目录不存在和没有写权限,所以我们要更换一个有写权限的目录。我们把命令改成了下面的形式。

D:\androidStudio\jre\bin\keytool -genkey -v -keystore D:\key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

这时候你得终端会出现如下图信息,表示创建成功了。

key.jks文件创建成功

这时你的D盘下面就会有一个Jks的文件,记住这个文件不能共享给任何人

有了这个key.jks文件后,可以到项目目录下的android文件夹下,创建一个名为key.properties的文件,并打开粘贴下面的代码。

storePassword=    //输入上一步创建KEY时输入的 密钥库 密码
keyPassword=    //输入上一步创建KEY时输入的 密钥 密码
keyAlias=key
storeFile=<E:/key.jks>    //key.jks的存放路径

我的文件最后是这样的:

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))

把如下代码进行替换

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

如果你的终端出现如下信息,表示你打包成功了:

flutter打包成功提示

上图告诉我们打包后的路径在build\app\outputs\flutter-apk\app-release.apk下,我们可以看看是否有这个包。

打包成功了如何安装呢?输入下面命令:

flutter install

我是在虚拟机上测试的,有真机的可以试试在手机上看一下。

flutter安装到虚拟机上测试

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有资源及文章均来源于网络及用户分享或为本站原创,仅限用于学习和研究,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » P21. Flutter客户端如何打包apk

发表评论

IT互联网行业相关广告投放 更专业 更精准

立即查看 联系我们