【问题标题】:keytool : The term 'keytool' is not recognized as the name of a cmdlet, function, script file, or operable programkeytool : 术语“keytool”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称
【发布时间】:2018-07-25 14:43:46
【问题描述】:

正在尝试为 android 构建版本。我在 vscode 终端中运行了keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key,但出现此错误

keytool : The term 'keytool' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -val ...
+ ~~~~~~~
    + CategoryInfo          : ObjectNotFound: (keytool:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

我运行了 flutter doctor -v 并得到 thisJava binary at: C:\Program Files\Android\Android Studio\jre\bin\java 使用路径并用 keytool 替换 java(如文档中所示)但仍然出错。 我该怎么办

【问题讨论】:

    标签: dart flutter


    【解决方案1】:

    尝试从普通的 Windows 命令提示符运行它

    D:\temp>"c:\Program Files\Android\Android Studio\jre\bin\keytool.exe" -help
    Key and Certificate Management Tool
    
    Commands:
    
     -certreq            Generates a certificate request
     -changealias        Changes an entry's alias
     -delete             Deletes an entry
     -exportcert         Exports certificate
    ...
    

    另外,在 Windows 上,您不能使用 ~/。将其更改为 Windows 样式的路径,例如 C:\Users\Norbert\keys,或者您想要保留密钥库的任何位置。

    【讨论】:

    • 我按照你说的做了,但我仍然得到同样的错误 keytool : The term 'keytool' is not Recognized
    • 使用 C:\Program Files\Java\jre7\bin 或 C:\Program Files\Java\jdk1.7.0_09\bin。只要确保找到 keytool.exe
    【解决方案2】:

    创建密钥库 如果您有现有的密钥库,请跳到下一步。如果没有,请在命令行运行以下命令来创建一个:

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

    注意:请将此文件保密;不要将其签入公共源代码管理。

    注意:keytool 可能不在您的路径中。它是作为 Android Studio 的一部分安装的 Java JDK 的一部分。具体路径,运行flutter doctor -v,查看‘Java binary at:’后面打印的路径,然后用keytool替换java的完全限定路径。

    从应用程序引用密钥库 创建一个名为 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/user name/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
        }
    }
    

    查看本教程的描述:https://www.youtube.com/watch?v=nGvPNG-f1-o

    或使用工具生成密钥

    https://shatter-box.com/knowledgebase/android-apk-signing-tool-apk-signer/下载应用签名工具

    转到目录 Java 二进制文件:C:\Program Files\Android\Android Studio\jre\bin\java

    然后输入 cmd 并回车 enter image description here

    按照视频教程生成密钥,将密钥放置在您想要的任何位置,然后按照下一个教程使用第一个教程将密钥封装在应用程序中。

    【讨论】:

      【解决方案3】:
      1. 检查系统中的JDK是否配置正确
      2. 如果Java配置正确,请检查Andriod SDK是否安装正确
      3. 如果安装了 Android SDK,则在命令提示符中运行以下命令,

      keytool -list -keystore %USERPROFILE%\.android\debug.keystore

      这是我们可以在 FireBase 中使用的调试证书。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-01
        • 2021-05-23
        • 2020-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多