自学内容网 自学内容网

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


原文地址:https://blog.csdn.net/nonagontech/article/details/142466103

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!