一、创建 keystore

1.先输入命令:

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

2.按提示输入相关参数,如下图所示

二、引用 keystore(

1.创建一个名为<app dir>/android/key.properties的文件,其中包含对密钥库的引用:

storePassword=第一步创建的key.jks文件时输入的密码
keyPassword=第一步创建的key.jks文件时输入的密码
keyAlias=key //.jks文件名,这里我们创建的key.jks,所以为key
storeFile=第一步创建的key.jks文件的存储路径 如:C:/Users/<user name>/key.jks

注意:

  • 保持文件私密,不要将它加入公共源代码控制中;
  • storeFile中的路径是以<app dir>/android/app/开始的相对路径,因此为了防止不必要的错误建议使用绝对路径

2.在gradle中配置签名

通过编辑<app dir>/android/app/build.gradle文件为您的应用配置签名

(1)添加
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))signingConfigs {release {keyAlias keystoreProperties['keyAlias']keyPassword keystoreProperties['keyPassword']storeFile file(keystoreProperties['storeFile'])storePassword keystoreProperties['storePassword']}
}(2)修改buildTypes
buildTypes {release {signingConfig signingConfigs.releasendk{ // 必须加入这部分,否则可能导致编译成功的release包在真机中会闪退abiFilters "armeabi-v7a"}}debug {ndk {//这里要加上,否则debug包会出问题,后面三个为可选,x86建议加上不然部分模拟器回报错abiFilters "armeabi", "armeabi-v7a", "arm64-v8a",  "x86"}}
}

注意 :

release包在真机中闪退可能是因为打包时没有引入arm64的libflutterso文件导致在arm64架构手机上出现“兼容”问题。

主要是引用so库的问题arm64cpu架构是可以向下兼容的,就是arm64架构的cpu可以使用arm32的.so文件。出现问题真正原因是我们在引用so库时(引用的三方库中引用了so库)。

三、开启混淆

默认情况下 flutter 不会开启 Android 的混淆。

如果使用了第三方 Java 或 Android 库,也许你想减小 apk 文件的大小或者防止代码被逆向破解。

配置混淆

创建 /android/app/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.**  { *; }
复制代码

注意 :上述配置只混淆了 Flutter 引擎库,任何其他库(比如 Firebase)需要添加与之对应的规则。

开启混淆/压缩

打开 /android/app/build.gradle 文件,定位到 buildTypes 块。

在 release 配置中将 minifyEnabled 和 useProguard 设为 true,再将混淆文件指向上一步创建的文件。

android {...buildTypes {release {signingConfig signingConfigs.releaseminifyEnabled trueuseProguard trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
}

四、构建一个发布版(release)APK

如果您完成了签名步骤,则会对APK进行签名。

使用命令行:

  1. cd <app dir>
  2. 运行flutter build apk (flutter build 默认会包含 --release选项).

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

五、在设备上安装发行版APK

按照以下步骤在已连接的Android设备上安装上一步中构建的APK

  1. 用USB将Android设备连接到电脑
  2. 运行 cd <app dir> .
  3. 运行 flutter install .

flutter中App签名相关推荐

  1. Flutter中实现整个App变为灰色

    前言 为了让更多的人永远记住12月13日,各大厂都在这一天将应用变灰了. 那么接下来我们看一下Flutter是如何实现的. Flutter中实现整个App变为灰色 在Flutter中实现整个App变为 ...

  2. android 启动白屏_从细节入手改善用户体验,Flutter跨平台App开发中设置Android和iOS的启动页

    前言 flutter开发App方便快捷,就是冷启动的时候要加载dart引擎有短暂的白屏,严重影响用户体验,这个时候我们就需要设置一个启动图片,想国内大部分App那样(例如微信那个地球),启动App的时 ...

  3. iOS企业签名过程中APP频繁出现闪退是什么原因?

    企业签名中,我们总会遇到这样或者那样的问题,要么掉签,要么闪退,那在之前的文章,已不止一次跟大家说了掉签的问题,今天就跟大家详细的聊一聊闪退的问题,希望对大家的推广有所帮助. 其实不管是掉签还是闪退, ...

  4. 针对有APP签名的系统中,短信不能收发的问题解决过程

    宇朔项目中,因为客户的需求,我把很多无关的APP都给去掉了,只保留了客户需要的电话.短信.蓝牙.通讯录.设置等几个基本APP.后来,客户反映,我们的系统,不能正常地发送接收短信,之前我没有测试过这个, ...

  5. flutter中state生命周期与app生命周期与路由监听

    State生命周期 1.第一次展示到屏幕上时会依次调用当前element的构造函数,initState,didChangeDependencies,build 2.如果只是自己发生了更新,则只会回调b ...

  6. 中国信通院推出了一个“APP签名服务系统,可防篡改、可追溯、第三方认证“的初步了解

    中国信通院推出了一个"APP签名服务系统,可防篡改.可追溯.第三方认证"的初步了解 今天查看邮箱无意间看到一封小米应用商店的发的邮箱,内容如下: 点击上图中的链接进入官网 国家工信 ...

  7. Flutter 中的常见的按钮组件 以及自 定义按钮组件、FloatingActionButton 实现类似 闲鱼 App 底部导航凸起按钮

    文章目录 一. Flutter 中的按钮组件介绍 二. Flutter 按钮组件中的一些属性 三. Flutter FloatingActionButton 介绍 四. FloatingActionB ...

  8. Flutter 打包APP (Android IOS)

    打包Android apk 参考 https://flutter.dev/docs/deployment/android https://flutterchina.club/android-relea ...

  9. 一招教会你处理Flutter中的数据

    目录传送门:<Flutter快速上手指南>先导篇 在一个 App 中,数据类是必不可少. 我们需要从接口请求数据(通常为 JSON 格式),然后解析成对象,再使用它. 看看在 Flutte ...

最新文章

  1. Professional WCF 4读书笔记(2)——消息交换模式
  2. 鸟哥的Linux私房菜(基础篇)-第一章、Linux是什么(一.1.Linux是什么)
  3. sop4封装尺寸图_妈妈再也不用担心我PCB封装又做错了~
  4. 【Linux】很实用的 Linux 高级命令,老码农一定要懂
  5. 代码很烂,所以离职?
  6. mysql 存储过程 汉字取拼音或者首字母
  7. RadASM资源链接错误RC2104及找不到resource.h解决方案
  8. Android之USB打印
  9. 公众号被封小感:你是否拥有绝地反击的能量?
  10. C语言程序设计预备作业
  11. Java 生成微信群头像 九宫格头像
  12. iOS11适配-Safe Area
  13. 手Q游戏中心上线 完美释放娱乐基因
  14. 莮亾芣湜唥洫,莮亾竾浍哭
  15. 画论88 高秉《指头画说》
  16. android studio 出现: Design editor is unavailable until a successful build 问题
  17. 执着的数字思想者——Pascal之父
  18. 如何做一个统计网页访问量的功能
  19. HJ77 火车进站 —— 华为机试练习题
  20. 【损失函数】NLLLoss损失、CrossEntropy_Loss交叉熵损失以及Label Smoothing示例与代码

热门文章

  1. 计算机应用软件用着总是闪退是什么原因
  2. 路由器开启IPv6的方法
  3. java8/jdk1.8 官网下载地址
  4. 一年当中几月份买车最合适?什么时候最便宜?
  5. 超硬核!华为智慧屏上的家庭相册竟可以自动精准分类?
  6. 云和恩墨加入京东云“云筑计划”,共筑PaaS新生态
  7. 测测你的眼睛对色差的辨识度?抱歉我开挂了……【JavaScript脚本实现找色差小游戏自动刷关】
  8. 计算机实战项目之 [含论文+辩论PPT+源码等]微信小程序社区疫情防控+后台管理|前后分离VUE[包运行成功
  9. 360浏览器中页面打开如何默认极速模式
  10. DanmuPlayer插件获取数据库弹幕——ssm弹幕应用