我的第一个 Android 应用程序运行良好,直到我尝试对其进行签名

My first Android app was going great until I tried getting it signed

自 12 月以来,我一直在 Android Studio 中使用 Flutter/Dart 进行开发,并希望最终将其开放给其他人进行内部测试。每当我上传我的应用程序时,它都会显示 Android App Bundle 未签名。

我想在构建菜单中应该有一个签署捆绑包的选项,但我没有这样的菜单项。我无法在 Android Studio 中设置签名。

我在该站点上看到其他帮助,建议将 build.gradle 从“signingConfig signingConfigs.debug”更改为“signingConfig signingConfigs.release”。我见过的所有变体都会导致构建错误,即 'release' 是一个未知选项。

希望有人能在 2 分钟内帮我解决我过去 5 个小时一直在做的事情。

我的设置:

Android 大黄蜂工作室 | 2021.1.1 补丁 3 Build #AI-211.7628.21.2111.8309675,建于 2022 年 3 月 16 日 运行时版本:11.0.11+9-b60-7590822 amd64 VM:Oracle Corporation 的 OpenJDK 64 位服务器 VM Windows 10 10.0 GC:G1年轻代,G1老年代 内存:1280M 核心数:12 注册表:external.system.auto.import.disabled=true 非捆绑插件:Dart (211.7817)、org.jetbrains.kotlin (211-1.6.21-release-334-AS7442.40)、io.flutter (66.0.1)、org.intellij.plugins.markdown (211.7142. 37)

我也被同样的错误困住了至少几个小时,我就是这样解决的。

在终端中键入以下命令以获取 .jks 文件

如果在 Mac/Linux

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

对于windows

keytool -genkey -v -keystore c:\Users\USER_NAME\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload

然后你会被要求提供一些细节并输入它们,然后你会得到一个.jks文件,将它复制并粘贴到[project]/android/app/文件夹中以备不时之需。 如果你的代码是 public.

不要忘记在 .gitignore 中添加它

之后创建一个名为 [project]/android/key.properties 的文件,它实际上是对您的密钥的引用,并粘贴到密钥属性下方:

storePassword=<password you used to create .jks file>
keyPassword=<key password you used to create .jks file>
keyAlias=upload
storeFile=../app/upload-keystore.jks

创建key.properties后,需要配置[项目]/android/app/build.gradle个文件:

1.

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
   keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
      ...
}
signingConfigs {
release {
       keyAlias keystoreProperties['keyAlias']
       keyPassword keystoreProperties['keyPassword']
       storeFile keystoreProperties['storeFile'] ? 
       file(keystoreProperties['storeFile']) : null
       storePassword keystoreProperties['storePassword']
   }
}
buildTypes {
   release {
       signingConfig signingConfigs.release
   }
}

最后,flutter 清理并使用以下命令重建应用程序包:

flutter build appbundle

恭喜您的应用程序包已签名并准备好在 Play 商店发布。