【问题标题】:How to solve Invalid keystore format?如何解决无效的密钥库格式?
【发布时间】:2021-06-25 00:03:05
【问题描述】:

任务 ':app:packageRelease' 执行失败。

执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade 时发生故障 com.android.ide.common.signing.KeytoolException:无法从存储“/Users/husseinawaesha/key.jks”读取密钥密钥:密钥库格式无效

【问题讨论】:

  • 您是否遵循 Android 的所有签名流程?
  • 我一步一步的走在颤动的文档中
  • 要么创建一个新的,要么你拥有的那个坏了

标签: android flutter


【解决方案1】:

Play 管理中心帮助页面中的这条命令行语句将生成一个上传密钥库,您只需替换您自己的别名并提供 keytool 的路径...

keytool -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore keystore.jks

但是,虽然它确实要求输入存储密码,但它不会要求输入密钥密码。如果你像我一样是新手,你可能不会注意到,后来当你必须输入密钥密码时,你可能会发现自己在翻阅笔记试图找到你写下来的地方。如果您输入诸如 keypassword 之类的内容作为猜测,它将以 Invalid keystore format 响应。

最好使用Android Studio进程生成一个Upload Keystore而不是这个命令行语句。

【讨论】:

  • 使用 Android Studio 生成,它工作正常。遗憾的是官方反应原生文档具有误导性。
【解决方案2】:

你需要用android studio生成密钥。

我遇到了同样的问题,我的 M1(OpenJDK) 上的 keytool 生成了无效的密钥。

【讨论】:

    【解决方案3】:

    请通过此代码创建密钥库

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

    从应用程序引用密钥库

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

    storePassword=password from previous step
    keyPassword=password from previous step
    keyAlias=key
    storeFile=location of the key store file, e.g. 
    /Users/username/key.jks
    

    将此添加到应用级别渐变

    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']
         }
           }
         buildTypes {
         release {
          signingConfig signingConfigs.release
         }
       }
    

    【讨论】:

      【解决方案4】:

      这可能是 Android Studio 和 Keytool 使用的 Java 版本之间的冲突。要解决这个问题,请使用 Android Studio 的 JDK 重新创建密钥库。

      1. 删除或重命名您当前的密钥库(.jks 文件)

      2. 检查 Android Studio 的 JDK

      flutter doctor -v
      

      会是这样的

      Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
      
      1. 导航到java所在的bin文件夹(您的路径可能不同)
      cd /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/
      
      1. 创建新的密钥库:

      https://flutter.dev/docs/deployment/android#create-an-upload-keystore

      【讨论】:

        猜你喜欢
        • 2012-08-30
        • 2023-03-20
        • 2022-12-11
        • 1970-01-01
        • 2019-04-12
        • 2010-11-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多