flutter中App签名
一、创建 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
的libflutter
的so文件
导致在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进行签名。
使用命令行:
cd <app dir>
- 运行
flutter build apk
(flutter build
默认会包含--release
选项).
打包好的发布APK位于<app dir>/build/app/outputs/apk/app-release.apk
。
五、在设备上安装发行版APK
按照以下步骤在已连接的Android设备上安装上一步中构建的APK
- 用USB将Android设备连接到电脑
- 运行
cd <app dir>
. - 运行
flutter install
.
flutter中App签名相关推荐
- Flutter中实现整个App变为灰色
前言 为了让更多的人永远记住12月13日,各大厂都在这一天将应用变灰了. 那么接下来我们看一下Flutter是如何实现的. Flutter中实现整个App变为灰色 在Flutter中实现整个App变为 ...
- android 启动白屏_从细节入手改善用户体验,Flutter跨平台App开发中设置Android和iOS的启动页
前言 flutter开发App方便快捷,就是冷启动的时候要加载dart引擎有短暂的白屏,严重影响用户体验,这个时候我们就需要设置一个启动图片,想国内大部分App那样(例如微信那个地球),启动App的时 ...
- iOS企业签名过程中APP频繁出现闪退是什么原因?
企业签名中,我们总会遇到这样或者那样的问题,要么掉签,要么闪退,那在之前的文章,已不止一次跟大家说了掉签的问题,今天就跟大家详细的聊一聊闪退的问题,希望对大家的推广有所帮助. 其实不管是掉签还是闪退, ...
- 针对有APP签名的系统中,短信不能收发的问题解决过程
宇朔项目中,因为客户的需求,我把很多无关的APP都给去掉了,只保留了客户需要的电话.短信.蓝牙.通讯录.设置等几个基本APP.后来,客户反映,我们的系统,不能正常地发送接收短信,之前我没有测试过这个, ...
- flutter中state生命周期与app生命周期与路由监听
State生命周期 1.第一次展示到屏幕上时会依次调用当前element的构造函数,initState,didChangeDependencies,build 2.如果只是自己发生了更新,则只会回调b ...
- 中国信通院推出了一个“APP签名服务系统,可防篡改、可追溯、第三方认证“的初步了解
中国信通院推出了一个"APP签名服务系统,可防篡改.可追溯.第三方认证"的初步了解 今天查看邮箱无意间看到一封小米应用商店的发的邮箱,内容如下: 点击上图中的链接进入官网 国家工信 ...
- Flutter 中的常见的按钮组件 以及自 定义按钮组件、FloatingActionButton 实现类似 闲鱼 App 底部导航凸起按钮
文章目录 一. Flutter 中的按钮组件介绍 二. Flutter 按钮组件中的一些属性 三. Flutter FloatingActionButton 介绍 四. FloatingActionB ...
- Flutter 打包APP (Android IOS)
打包Android apk 参考 https://flutter.dev/docs/deployment/android https://flutterchina.club/android-relea ...
- 一招教会你处理Flutter中的数据
目录传送门:<Flutter快速上手指南>先导篇 在一个 App 中,数据类是必不可少. 我们需要从接口请求数据(通常为 JSON 格式),然后解析成对象,再使用它. 看看在 Flutte ...
最新文章
- Professional WCF 4读书笔记(2)——消息交换模式
- 鸟哥的Linux私房菜(基础篇)-第一章、Linux是什么(一.1.Linux是什么)
- sop4封装尺寸图_妈妈再也不用担心我PCB封装又做错了~
- 【Linux】很实用的 Linux 高级命令,老码农一定要懂
- 代码很烂,所以离职?
- mysql 存储过程 汉字取拼音或者首字母
- RadASM资源链接错误RC2104及找不到resource.h解决方案
- Android之USB打印
- 公众号被封小感:你是否拥有绝地反击的能量?
- C语言程序设计预备作业
- Java 生成微信群头像 九宫格头像
- iOS11适配-Safe Area
- 手Q游戏中心上线 完美释放娱乐基因
- 莮亾芣湜唥洫,莮亾竾浍哭
- 画论88 高秉《指头画说》
- android studio 出现: Design editor is unavailable until a successful build 问题
- 执着的数字思想者——Pascal之父
- 如何做一个统计网页访问量的功能
- HJ77 火车进站 —— 华为机试练习题
- 【损失函数】NLLLoss损失、CrossEntropy_Loss交叉熵损失以及Label Smoothing示例与代码
热门文章
- 计算机应用软件用着总是闪退是什么原因
- 路由器开启IPv6的方法
- java8/jdk1.8 官网下载地址
- 一年当中几月份买车最合适?什么时候最便宜?
- 超硬核!华为智慧屏上的家庭相册竟可以自动精准分类?
- 云和恩墨加入京东云“云筑计划”,共筑PaaS新生态
- 测测你的眼睛对色差的辨识度?抱歉我开挂了……【JavaScript脚本实现找色差小游戏自动刷关】
- 计算机实战项目之 [含论文+辩论PPT+源码等]微信小程序社区疫情防控+后台管理|前后分离VUE[包运行成功
- 360浏览器中页面打开如何默认极速模式
- DanmuPlayer插件获取数据库弹幕——ssm弹幕应用