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

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. Sql将一列数据拆分为多行显示的两种方法

    原始数据与期望结果有表tb, 如下:id          value----------- -----------1           aa,bb2           aaa,bbb,ccc欲按 ...

  2. MySQL集群高可用

    目录 MySQL高可用 Galera Cluster Galera Cluster Galera Cluster特点 Galera Cluster 缺点 Galera Cluster工作过程 Gale ...

  3. Java连载61-异常的机制与分类

    一.is a.is like a.has a 1.is a(就是继承) public class Animal{ public void method1{ } } public class Dog e ...

  4. Promise代码详解(show you the code)

    认识异步函数 同步函数: const sum1 =(a,b)=>{ return a+b } console.log('AAA'); console.log(sum(5,6)); conosle ...

  5. 【重学Node.js 第5篇】部署项目到腾讯云服务器

    课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://github.com/hellozhangran ...

  6. Spring Boot 为什么这么火?

    没错 Spring Boot 越来越火了,而且火的超过了我的预期,作为一名行走一线的 Java 程序员,你可能在各个方面感受到了 Spring Boot 的火. Spring Boot 的火 技术社区 ...

  7. Prometheus学习系列(八)之Prometheus API说明

    前言 本文来自Prometheus官网手册 和 Prometheus简介 HTTP API 在Prometheus服务器上的/api/v1下可以访问当前稳定的HTTP API. 将在该端点下添加任何非 ...

  8. IDEA中使用Maven模板创建Servelet项目并使用Tomcat来运行项目

    首先需要正确安装Maven和Tomact,Maven安装和Tomact安装步骤,参见别的文章. 一.创建Maven工作空间 点击Finish按钮后,耐心等待.直到出现BUILD SUCCESS为止. ...

  9. 建造者模式-C#改良实现

    区分网上已有的一般建造者模式实现,个人觉得实现太单一了,自己google查了一些好的实现,挑了其中比较适合的,做个笔记. # region 标准Builder模式实现 // 产品 class Tele ...

  10. 当Python遇上AI(一)

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.什么是学习 如果要给学习下一个定义,那么根据某百科给出的定义是——学习,是指通过阅读.听讲.思考和实践等途径获 ...