当前位置: 首页 > article >正文

Flutter为Android添加签名并打包

前言

我们需要将App进行数字签名才能发布到商店里。在这里就具体描述一下如果给App添加签名

为App签名

创建一个用户上传的秘钥库

如果你已经有一个秘钥库了,可以直接跳到下一步,如果没有则按照下面的指令创建一个

keytool 可能不在我们的系统路径中。它是 Java 的一部分,在安装 Android Studio 的时候会被一起安装。运行 flutter doctor -v,’Java binary at:’ 之后打印出来的就是它的路径,然后用 java 来替换以上命令中的 keytool,并加上 keytool 的完整路径即可。如果文件路径包含空格,类似 Program Files 这样的,请使用平台允许的命名规则。例如,在 Mac/Linux 上使用 Program\ Files,而在 Windows 上可以使用 "Program Files"

打开电脑终端执行以下指令

# macOS或者Linux系统上
keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
#在windows系统上
keytool -genkey -v -keystore %userprofile%\upload-keystore.jks  -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload

从App中引用秘钥库

在项目/android/key.properties文件,它包含了密钥库的位置的定义。在替换内容时要去除< >括号。

storePassword和keyPassword的值都是上一步生成文件时我们自己输入的

storeFile 密钥路径在 macOS 上类似于 /Users/<user name>/upload-keystore.jks,在 Windows 上类似于 C:\\Users\\<user name>\\upload-keystore.jks

storePassword=<password-from-previous-step>
keyPassword=<password-from-previous-step>
keyAlias=upload
storeFile=<keystore-file-location>

在gradle中配置签名

在以 release 模式下构建你的应用时,修改 项目/android/app/build.gradle 文件,以通过 gradle 配置你的上传密钥

1.在 android 代码块之前将你 properties 文件的密钥库信息添加进去,将 key.properties 文件加载到 keystoreProperties 对象中。

   def keystoreProperties = new Properties()
   def keystorePropertiesFile = rootProject.file('key.properties')
   if (keystorePropertiesFile.exists()) {
       keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
   }

   android {
         ...
   }

2.找到 buildTypes 代码块:

   buildTypes {
       release {
           // TODO: Add your own signing config for the release build.
           // Signing with the debug keys for now,
           // so `flutter run --release` works.
           signingConfig signingConfigs.debug
       }
   }

将其替换为我们的配置内容:

   signingConfigs {
       release {
           keyAlias keystoreProperties['keyAlias']
           keyPassword keystoreProperties['keyPassword']
           storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
           storePassword keystoreProperties['storePassword']
       }
   }
   buildTypes {
       release {
           signingConfig signingConfigs.release
       }
   }

现在我们 app 的发布版本就会被自动签名了。

清理缓存

当你更改 gradle 文件后,也许需要运行一下 flutter clean。这将防止缓存的版本影响签名过程。

flutter clean
flutter pub get

打包指令

#abb格式
flutter build appbundle
#apk格式
flutter build apk


http://www.kler.cn/a/318036.html

相关文章:

  • odoo中@api.model, @api.depends和@api.onchange 装饰器的区别
  • 为什么推荐使用构造函数注入而非@Autowired注解进行字段注入
  • MYSQL初始化数据目录
  • 【Linux】:Linux网络编程基础
  • 【测试】接口测试
  • SCSA:探索空间与通道注意力之间的协同效应
  • 数值计算 --- 平方根倒数快速算法(上)
  • 虚拟机与物理机的文件共享
  • 【LLM学习之路】9月23日24日 第十、十一天 Attention代码解读
  • 将硬盘的GPT 转化为MBR格式
  • 如何完成等保的建设整改
  • Apache Doris 实践
  • MySQL的数据库课程设计的基本步骤和考虑因素
  • 大小端字节序 和 内存高低地址顺序
  • 3. 函数
  • MySQL误删数据怎么办?
  • 828华为云征文 | 云服务器Flexus X实例,Docker集成搭建搭建Flink
  • cpp中的namespace详解
  • 基于机器学习的癌症数据分析与预测系统实现,有三种算法,bootstrap前端+flask
  • Cubieboard2(三) 系统构建 —— WSL Ubuntu 中挂载 U 盘(SDCard)
  • Qt上下文菜单
  • C++从零实现Json-Rpc框架(项目介绍)
  • 基于SpringBoot+Vue+MySQL的智能物流管理系统
  • 中国电子学会202403青少年软件编程(Python)等级考试试卷(四级)真题
  • 8个高清视频素材网站,免费下载。
  • CICD从无到会