flutter 打包apk
打包的具体操作,可以参照官网,只是官网没有那么细
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的更多相关文章
- 从零学习Fluter(七):Flutter打包apk详解
		写一个win上 flutter 打包apk的教程 这篇文档介绍一下flutter打包发布正式版apk 整体来看,和命令行打包rn的方法相差不大 打包前先做检查工作&查看构建配置 Android ... 
- AndroidStudio中Flutter打包APK
		1.生成签名文件 在打包之前我们需要一个签名文件,证明文件的唯一性. keytool -genkey -v -keystore F:\APP\sign.jks -keyalg RSA -keysize ... 
- MacOS系統Flutter打包apk
		一.打包前需要做一些基本设置的确认 1.应用名 2.权限设置 3.applicationId:应用唯一标识符 4.versionCode:版本号 5.versionName:版本名称 6.APP应用图 ... 
- flutter 打包apk之后,安装在手机上无法访问网络解决方法
		</application> <uses-permission android:name="android.permission.READ_PHONE_STATE" ... 
- Flutter打包release版本安卓apk包真机安装无法请求网络的解决方法
		今天flutter build apk打包了一个release.apk包,在真机上安装后网络数据都不显示,但是在模拟器上没问题,然后又连接真机开debug各种测试,一切都正常!那这会是什么问题呢? 查 ... 
- Flutter 打包Android APK 笔记与事项
		获取一个KEY 首先要获取 你的 打包应用的一个 key ,这一步其实和 在AndroidStudio 上打包 APK 一样,都是要注册一个本地的 key,key 其实也就是 jks文件啦. 如果已经 ... 
- Flutter 打包程序 build android apk
		Step-1 Java 路径 找到java路径, 可使用[flutter doctor -v] Step-2: 进入目录 找到路径后 C:\Program Files\Java\jre1.8.0_23 ... 
- flutter vscode 安卓打包apk文件
		配置 VSCode默认是没有使用密钥签名的,往往我们在正式项目中是需要签名的.那就创建好了...所以需要自己创建并使用密钥签名 步骤一 创建密钥库 执行以下命令: keytool -genkey -v ... 
- [摘录]flutter打包后无法访问接口
		打开文件{{flutterPorject}}\android\app\src\main\AndroidManifest.xml这个文件增加权限信息: <uses-permission andro ... 
随机推荐
- ElasticSearch 时间格式
			"datetime": { "type": "date", "format": "yyyy-MM-dd HH: ... 
- GrimTheRipper: 1 Vulnhub Walkthrough
			靶机下载: https://www.vulnhub.com/entry/grimtheripper-1,350/ 主机层面端口扫描: ╰─ nmap -p1-65535 -A 10.10.202.15 ... 
- python基础之元组讲解
			概念讲解: 1.Python 的元组与列表十分相似,但是元组的元素只可读不可修改: 2.元组使用小括号,列表使用方括号: 3.元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. (1)创建一 ... 
- DFA敏感词过滤实现
			package test.java.com.odianyun.util.sensi; import java.util.*; /** * 敏感词处理工具 - DFA算法实现 * * @author s ... 
- 什么是spring框架?spring特点与好处,使用spring框架的好处是什么?
			转载:https://blog.csdn.net/hht006158/article/details/80181207. Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Ja ... 
- C语言函数调用过程,汇编角度查看
			C语言函数调用过程,汇编角度查看 把函数的参数按照调用约定压栈或者存储到寄存器中 调用要使用的函数,先把调用者的地址入栈,方便回来 跳转到函数 把函数使用到的一些寄存器压栈,避免修改寄存器的值 执行函 ... 
- Java基础语法05-面向对象-封装-包-构造器-初始化
			封装 面向对象三大特性:封装.继承.多态 封装的好处 1.调用者:方便使用/简化使用 2.设计者:安全,可控 隐藏对象内部的复杂性,只对外公开简单的接口.便于外界调用,从而提高系统的可扩展性.可维护性 ... 
- 带你自行搭建虚拟机和Redis集群环境,值得收藏!
			前言: 我们看到分析 Redis 使用或原理的文章不少,但是完整搭建一套独立的 redis 集群环境的介绍,并不是很多或者说还不够详细. 那么,本文会手把手带着大家搭建一套 Redis 集群环境,Re ... 
- python高阶函数—filter
			python内置了一个filter函数,用于过滤序列.和map函数类似,filter()函数也接受一个函数和一个序列.只不过filter函数中是把函数依次作用于序列中的每一个元素,如果是True则保留 ... 
- mysql order by limit 的一个坑
			分页查询的时候遇到的坑: 发现的问题: 对单个无索引的字段进行排序后limit .发现当被排序字段有相同值时并且在limit范围内,取的值并不是正常排序后的值, 也就是说,当排在第N行的数据可取key ... 
