当前位置:首页 > 其他 > flutter笔记:官方资料搬运-安卓客户端打包

flutter笔记:官方资料搬运-安卓客户端打包

转载自:segmentfault 2018-12-25 其他 980

第一步

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

配置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

然而实际上的效果是:

7700793-bf0f47a872100a99.png

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

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

flutter doctor -v

然后你看到的结果是:
7700793-255deaccf0eab7dc.png

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

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

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

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

这时候会弹出一堆问询,小伙伴们按要求填写即可:
7700793-1572ad0860a382c9.png

但是按要求操作的小伙伴并不能如愿以偿得到结果,由于当前的目录下没有写的权限,所以要找一个有写入权限的路径放置生成的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,于是乎:

7700793-2b56b7e2fc65409a.png

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

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

storePassword=输入上一步创建KEY时输入的 密钥库 密码

keyPassword=输入上一步创建KEY时输入的 密钥 密码

keyAlias=key

storeFile=E:/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

耐心等待执行完毕后你会看到:
7700793-e43388216f9b6b88.png

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

flutter install

安装时,会把原来调试运行安装的APP卸载掉,重新安装新的APP:
7700793-8dc917a52b77e24e.png

然后看手机上:
7700793-9bc5f9bb360f58e6.png


分享给朋友:

相关文章

【年度重磅】阿里淘系全年技术总结黑皮书,1500页免费下载!

淘系技术将2020一整年的精华内容梳理合并,重磅推出【淘系技术2020技术年货】。在这本书中,你将看到:各技术栈下时新前沿的技术讲解与方法技巧、淘系技术大牛的职场成长经验&学习问答实录、年度精选技术人员必读书单、淘系经典开源项目介绍、2020淘系顶会 paper 全文。

百度上线“开发者搜索”,程序员专用的搜索平台

无意中发现了一个地址:https://kaifa.baidu.com百度近期上线的“开发者搜索”功能,看来是给程序员专门开发的一个搜索功能板块,目前测试了页面还算清爽,没有广告,后期未知!有待观察,有需要的小伙伴可以进行深度使用测试~~

纪念我们即将逝去的CentOS

CentOS 官方发文称 CentOS Stream 才是 CentOS 项目的未来,在接下来的一年里,将逐步把开发工作的重心从 CentOS Linux 往 CentOS Stream 转移。官方已明确表示未来不会再发布由 RHEL 代码编译而成的 CentOS,意思就是无须再对 Cen

为什么现在不建议个人站长做网站选择国内备案了?

除个别地区外,大多数国内的服务器相对比较便宜,但是便宜的代价就是需要备案,备案相对来说也有一定的好处,比如网络相对比较稳定(老观念)、一些国内比较大型的广告联盟可以申请、还有SEO方面的收录会相对比较快等等~但是缺点也很明显,比如备案时间长,突击审查时遇到不符合某些条条框框的规定后要重新整改,个人增

Golang+GoVCL开发的Excel转Json小工具:GoExcelToJson

工作开发中需要用到的一些功能,其实网上有很多,但是总觉得数据丢到网路上不安全,所以就自己写了一个小工具!

Docker 禁止美国“实体清单”主体使用,Docker 开源项目不受影响

Docker 公司最新的服务条款8月13日生效。条款引起关注的地方简单来说就是,Docker 公司提供的服务,禁止美国“实体清单”上的实体使用。Docker 公司相关条款写道:1.2 服务的所有使用均须接受这些条款。通过访问或使用服务或服务上提供的任何内容或服务,即表示您同意这些条款。如果

IEEE Spectrum 2020年编程语言排行:PHP依然进不了前10

IEEE Spectrum编程语言排行榜一年发布一次,排序是来自10个重要数据源的综合,例如IEEEXplore,GitHub,CareerBuilder等等2020年的前10上榜语言Python稳居首位,Go语言快速上升,PHP自从2019年就已经没有出现在前10榜单中了。2019年的前10上榜语

MySQL8.0.17版本之后,integer类型字段将不再显示长度

最近升级了最新版的MySQL8.0.20发现一个很神奇的现象:字段只要是integer类型的,不管你设置成多少,保存之后都会变成0...这就很诡异了,工具问题?然后去mysql中直接修改,也是如此。没办法只能去官方找答案了。从官方的解释来看得知从8.0.17版本开始,TINYINT, SMALLIN