打包的具体操作,可以参照官网,只是官网没有那么细

1、修改AndroidManifest.xml

2、构建配置  可以跳过

3、构建签名

4、创建 key.properties

5、配置混淆

6、修改builg配置build.gradle

7、打包

--------------------------------------------------分割线--------------------------------------------------------------------

1、修改AndroidManifest.xml

路径:<app dir> /android/app/src/main/AndroidManifest.xml

3、构建签名

使用keytool, 可以直接在Android Studio 的terminal里面操作

口令:keytool -genkey -v -keystore G:/keys/test.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias key

区分开来的字段需要注意,存储路径 和   别名, 路径里面的文件自己创建。

输入口令之后,开始填写一些信息,名字,公司....到了  【否】 这里写y,继续,没有报错的话签名就构建ok了,notepad++打开一坨乱码,我还在怀疑能用不呢。

4、创建 key.properties

路径:<app dir>/android/key.properties   文件手动创建

主要用来引入刚刚的签名文件

key.properties

storePassword = exanple   这是你创建签名写的密码
keyPassword = exanple 这是你创建签名写的密码
keyAlias = key 口令里面的alias key 对应
storeFile = G:/andro/example/android/app/keys/test1.keystore 绝对路径

5、配置混淆 

路径<app dir> /android/app/proguard-rules.pro  手动创建

proguard-rules.pro

#Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }

6、修改builg配置build.gradle

路径:<app dir>/android/app/build.gradle

build.gradle

def keystorePropertiesFile = rootProject.file("key.properties") // 引入
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
compileSdkVersion lintOptions {
disable 'InvalidPackage'
} defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "myapp.flutter_kiminitodoke"
minSdkVersion
targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
} buildTypes {
release {
signingConfig signingConfigs.release // debug
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

7、打包

进入项目目录

flutter build apk

打包好的发布APK位于<app dir>/build/app/outputs/apk/app-release.apk。

至此就ok了,过程中我也遇到了些问题。

1、签名路径问题,没有写绝对路径。

2、打包完成后闪退:就是程序的问题,然后我调试的时候也是闪退,后来是我手残改了这里,然后颜色都不对了,也是扯淡。

然后节本没有其他问题了。

 

flutter 打包apk的更多相关文章

  1. 从零学习Fluter(七):Flutter打包apk详解

    写一个win上 flutter 打包apk的教程 这篇文档介绍一下flutter打包发布正式版apk 整体来看,和命令行打包rn的方法相差不大 打包前先做检查工作&查看构建配置 Android ...

  2. AndroidStudio中Flutter打包APK

    1.生成签名文件 在打包之前我们需要一个签名文件,证明文件的唯一性. keytool -genkey -v -keystore F:\APP\sign.jks -keyalg RSA -keysize ...

  3. MacOS系統Flutter打包apk

    一.打包前需要做一些基本设置的确认 1.应用名 2.权限设置 3.applicationId:应用唯一标识符 4.versionCode:版本号 5.versionName:版本名称 6.APP应用图 ...

  4. flutter 打包apk之后,安装在手机上无法访问网络解决方法

    </application> <uses-permission android:name="android.permission.READ_PHONE_STATE" ...

  5. Flutter打包release版本安卓apk包真机安装无法请求网络的解决方法

    今天flutter build apk打包了一个release.apk包,在真机上安装后网络数据都不显示,但是在模拟器上没问题,然后又连接真机开debug各种测试,一切都正常!那这会是什么问题呢? 查 ...

  6. Flutter 打包Android APK 笔记与事项

    获取一个KEY 首先要获取 你的 打包应用的一个 key ,这一步其实和 在AndroidStudio 上打包 APK 一样,都是要注册一个本地的 key,key 其实也就是 jks文件啦. 如果已经 ...

  7. Flutter 打包程序 build android apk

    Step-1 Java 路径 找到java路径, 可使用[flutter doctor -v] Step-2: 进入目录 找到路径后 C:\Program Files\Java\jre1.8.0_23 ...

  8. flutter vscode 安卓打包apk文件

    配置 VSCode默认是没有使用密钥签名的,往往我们在正式项目中是需要签名的.那就创建好了...所以需要自己创建并使用密钥签名 步骤一 创建密钥库 执行以下命令: keytool -genkey -v ...

  9. [摘录]flutter打包后无法访问接口

    打开文件{{flutterPorject}}\android\app\src\main\AndroidManifest.xml这个文件增加权限信息: <uses-permission andro ...

随机推荐

  1. ElasticSearch 时间格式

    "datetime": { "type": "date", "format": "yyyy-MM-dd HH: ...

  2. GrimTheRipper: 1 Vulnhub Walkthrough

    靶机下载: https://www.vulnhub.com/entry/grimtheripper-1,350/ 主机层面端口扫描: ╰─ nmap -p1-65535 -A 10.10.202.15 ...

  3. python基础之元组讲解

    概念讲解: 1.Python 的元组与列表十分相似,但是元组的元素只可读不可修改: 2.元组使用小括号,列表使用方括号: 3.元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. (1)创建一 ...

  4. DFA敏感词过滤实现

    package test.java.com.odianyun.util.sensi; import java.util.*; /** * 敏感词处理工具 - DFA算法实现 * * @author s ...

  5. 什么是spring框架?spring特点与好处,使用spring框架的好处是什么?

    转载:https://blog.csdn.net/hht006158/article/details/80181207. Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Ja ...

  6. C语言函数调用过程,汇编角度查看

    C语言函数调用过程,汇编角度查看 把函数的参数按照调用约定压栈或者存储到寄存器中 调用要使用的函数,先把调用者的地址入栈,方便回来 跳转到函数 把函数使用到的一些寄存器压栈,避免修改寄存器的值 执行函 ...

  7. Java基础语法05-面向对象-封装-包-构造器-初始化

    封装 面向对象三大特性:封装.继承.多态 封装的好处 1.调用者:方便使用/简化使用 2.设计者:安全,可控 隐藏对象内部的复杂性,只对外公开简单的接口.便于外界调用,从而提高系统的可扩展性.可维护性 ...

  8. 带你自行搭建虚拟机和Redis集群环境,值得收藏!

    前言: 我们看到分析 Redis 使用或原理的文章不少,但是完整搭建一套独立的 redis 集群环境的介绍,并不是很多或者说还不够详细. 那么,本文会手把手带着大家搭建一套 Redis 集群环境,Re ...

  9. python高阶函数—filter

    python内置了一个filter函数,用于过滤序列.和map函数类似,filter()函数也接受一个函数和一个序列.只不过filter函数中是把函数依次作用于序列中的每一个元素,如果是True则保留 ...

  10. mysql order by limit 的一个坑

    分页查询的时候遇到的坑: 发现的问题: 对单个无索引的字段进行排序后limit .发现当被排序字段有相同值时并且在limit范围内,取的值并不是正常排序后的值, 也就是说,当排在第N行的数据可取key ...