博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flutter笔记5 官方资料搬运-安卓客户端打包
阅读量:5885 次
发布时间:2019-06-19

本文共 3419 字,大约阅读时间需要 11 分钟。

上一篇,使用material原生控件完成了人生的一个用flutter开发的APP,这两天为了理解flutter,翻了很多资料,信息量太大,烧了不少脑子,今天这篇就简单点,实战走一下安卓客户端的打包流程,看看会遇到什么问题。想查看官方资料的请移步。

##第一步 首先,你需要找到这几个路径下的文件,并配置其中的几个参数:

####配置APP图标

  • 项目目录/android/app/src/main/res/ 进入这个路径后,会看到很多个以**mipmap-**为前缀命名的文件夹,文件夹名称的后缀是对应的APP图标像素密度:

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

将对应像素密度的图片放入对应的文件夹中,图片记得用png格式,安装的APP会根据对应的屏幕像素密度使用适应尺寸的图标,但要注意,APP图标文件最好统一使用同一个名字,方便后面配置。

####配置APP名称、图标和系统权限

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

application标签内部:

android:label="myflutter"   //此属性为你的APP安装到手机上显示的名称,支持中文,所以取名的时候请浪一点~android:icon="@mipmap/ic_test"  //此属性为APP图标用到的图片文件名称//这里图片文件不需要输入文件格式后缀,前面说过的要使用相同文件名,因为这里并没有按像素密度分别配置对应的图片文件复制代码

uses-permission标签,此标签定义APP的系统权限,比如打开麦克风摄像头啦、获取联系人号码簿啦、是否允许上网等等等,权限有很多,具体请参考。在这里,默认配置了一个android:name="android.permission.INTERNET"的权限,意思是允许手机联网,因为flutter和APP交换数据需要用到这个权限。

##第二步 APP注册 ####生成keystore 官方写的很简单,终端下输入命令即可获取:

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

然而实际上的效果是:

然后官方note了一下,说可能会因为找不到keytool而报错,叫我们输入flutter doctor命令,从结果的Java binary at:中找到keytool.exe文件路径再执行上面的命令,然而我使用了N次flutter doctor也没找到Java binary at:

正确的打开方式是输入下面这个命令:

flutter doctor -v

然后你看到的结果是:

啊喂~那个官方文档是不是忘了更新啦。

然后我们复制上图中的路径,输入这个命令:

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

注意,把路径中最后的java替换成keytool

这时候会弹出一堆问询,小伙伴们按要求填写即可:

但是按要求操作的小伙伴并不能如愿以偿得到结果,由于当前的目录下没有写的权限,所以要找一个有写入权限的路径放置生成的KEY,于是上面的命令变成了:

E:\Applications\AndroidStudio\jre\bin\keytool -genkey -v -keystore /E:/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

注意看~/key.jks改成了/E:/key.jks,于是乎:

然后到E盘根目录下可以发现多了一个key.jks文件,记住:**不要把这个jks文件共享给任何人!!不要把这个jks文件共享给任何人!!不要把这个jks文件共享给任何人!!**尤其是只图方便把源码一股脑签入github的XX,如果是为公司做的APP,后果自己想~。

这时候到项目目录的android文件夹下创建一个名为key.properties的文件,并打开贴入以下代码:

storePassword=
//输入上一步创建KEY时输入的密钥库密码keyPassword=
//输入上一步创建KEY时输入的密钥密码keyAlias=keystoreFile=
//key.jks的存放路径复制代码

这个key.properties文件也不要共享出去!!

####配置key注册 进入项目目录的/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    }}复制代码

defaultConfig中,录入APPID和版本号,版本号命名控制参考:

defaultConfig {        applicationId "com.example.myflutter"  //APPID        minSdkVersion 16  //可运行应用的最低版本的 Android 平台,由该平台的 API 级别标识符指定        targetSdkVersion 27  //指定运行应用的目标 API 级别。在某些情况下,这允许应用使用在目标 API 级别中定义的清单元素或行为,而不是仅限于使用那些针对最低 API 级别定义的元素或行为。        versionCode 1    //内部版本号        versionName "1.0"  //对外公布的版本号        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }复制代码

##第三步 编译生成apk文件

到终端中输入如下命令:

flutter build apk

耐心等待执行完毕后你会看到:

然后到图中标识的路径下,找到生成apk文件,即打包完成了,你也可以在终端输入命令安装APP:

flutter install

安装时,会把原来调试运行安装的APP卸载掉,重新安装新的APP:

然后看手机上:

O了,今天的搬运到此完毕,走过一遍流程下来发现官网文档可能没及时更新,导致我踩了几个坑,不过总体来说还比较简单,大家可以自己搞搞试试,就到这里,补瞌睡去~

转载地址:http://mmlix.baihongyu.com/

你可能感兴趣的文章
【HTML5初探之多媒体元素】视频播放HTML5、Flash谁才是王道?
查看>>
Play with docker 1.12
查看>>
sql server中意向锁的作用
查看>>
一起Polyfill系列:让Date识别ISO 8601日期时间格式
查看>>
mysql基础知识
查看>>
提高mysql查询效率的六种方法
查看>>
Jsp Session
查看>>
mysql替换某个字段中的某个字符
查看>>
关于写blog这件事
查看>>
Linux中的其他命令
查看>>
轻松简单搭建Linux下的C#开发环境<转>
查看>>
一个类型初始值设定项引发异常
查看>>
将现有MySQL数据库改为大小写不敏感
查看>>
设计模式之美:Extension Object(扩展对象)
查看>>
linux中/etc/passwd文件与/etc/shadow文件解析
查看>>
外观模式之C++实现
查看>>
对于大流量的网站,您采用什么样的方法来解决访问量问题?
查看>>
Winform调用百度地图接口
查看>>
2.2. DHCP
查看>>
Pycharm 快捷键
查看>>