Flutter 打包发布

创建一个密钥库

打开Flutter的开发文档,进入配置 key store 的页面,请注意以下红线,是很容易忽略的地方

 Flutter 打包发布

 

 

 Flutter 打包发布

 

 

 

找到Java源文件

$ /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin/java

Flutter 打包发布

 

 

 

错误信息

 $ /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin/java keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload

错误: 找不到或无法加载主类 keytool

Flutter 打包发布

 

 

 修改后,

$ /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin/keytool -genkey -v -keystore /upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload

又报错了:keytool 错误: java.io.FileNotFoundException: /upload-keystore.jks (Read-only file system)

Flutter 打包发布

 

 

 

将文件生成个到其他目录,例如 Mac路径:~/platform,  windows 路径:D:/platform

$ /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin/keytool -genkey -v -keystore /upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -keystore ~/platform/android/keytool/android.key

生成成功:

Flutter 打包发布

 

 

 

从应用程序引用密钥库

创建一个名为的文件[project]/android/key.properties ,其中包含对密钥库的引用:

storePassword=<password from previous step> //密钥库密码
keyPassword=<password from previous step> //密钥密码
keyAlias=upload // 密钥标示名
storeFile=<location of the key store file, such as /Users/<user name>/upload-keystore.jks> //密钥库存放的路径

  

请注意红色部分,千万不要忽略,因为我已经被坑的很惨很惨了,

以下是我代码的部分,你可以按照你的填写

storePassword=1234567890 // 查看下图
keyPassword=1234567890 //查看下图
keyAlias=mykey // 查看下图
storeFile=/Users/<yourname>/android.key

  

Flutter 打包发布

 

 

 

配置Gradle登录

通过编辑[project]/android/app/build.gradle文件,将gradle配置为在发布模式下构建应用程序时使用上载密钥。

 

1. 在该android块之前,从属性文件中添加密钥库信息: 

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

   android {
         ...
   }

key.properties文件加载到keystoreProperties对象中。

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
       }
   }

您的应用的发布版本现在将自动签名。

 注意: 您可能需要flutter clean在更改gradle文件后运行。这样可以防止缓存的版本影响签名过程。

 

生成APK

直接在终端中输入:

flutter build apk

这时候就打包成功了  

上一篇:搭建Tomcat HTTPS支持


下一篇:noip2021 训练 3 做题记录