flutter keytool:术语“keytool”未被识别为cmdlet、函数、脚本文件或可操作程序的名称

fcg9iug3  于 2022-11-17  发布在  Flutter
关注(0)|答案(7)|浏览(304)

尝试为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并得到这个Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java,使用路径并用keytool替换java(如文档中所示),但仍然得到错误。

ndh0cuux

ndh0cuux1#

尝试从普通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,或者你想保存密钥库的任何地方。

yhxst69z

yhxst69z2#

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

一月一日

注意:请将此文件保密;请不要将其签入公共源代码管理。
注意:keytool可能不在您的路径中。它是Java JDK的一部分,作为Android Studio的一部分安装。对于具体路径,请运行flutter doctor -v并查看'Java binary at:'后显示的路径,然后使用该完全限定路径将java替换为keytool。
从应用中引用密钥库创建一个名为appdir/android/ www.example.com的文件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:\程序文件\安卓系统\Android Studio \jre\bin\java
然后键入cmd并输入enter image description here
按照视频教程生成密钥,将密钥放置在任何你想要的地方,然后按照下一个教程与第一个教程的应用程序包的关键.

pbwdgjma

pbwdgjma3#

在搜索了所有地方,甚至在youtube的评论,我发现你需要去目录***C:\Program Files\Android\Android Studio\jre***并按住Shift +右键单击,然后点击打开PowerShell窗口在菜单中出现.之后,你将不得不写.\之前,实际上粘贴keytool行命令.像下面的代码:

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

vcudknz34#

我也遇到过同样的问题,我是这样解决的:
1.打开命令“非windows电源 shell ”
1.运行“Flutter医生-v”

  1. at =〉“Java二进制文件位于:“有一个类似于“C:\Program Files.Android\Android Studio\jre\bin\java”的路径,删除java单词,使其类似于“C:\Program Files\Android\Android Studio\jre\bin”
    1.运行cd“步骤4中的路径”(in my case it was "C:\Program Files\Android\Android Studio\jre\bin")
    1.运行命令"keytool -genkey -v -keystore %userprofile%\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload"
    1.我建议看这个视频“https://www.youtube.com/watch?v=g0GNuoCOtaQ“开始于4:53
3xiyfsfu

3xiyfsfu5#

1.检查系统中是否正确配置了JDK
1.如果Java配置正确,请检查Andriod SDK是否安装正确
1.如果安装了Android SDK,则在命令提示符下运行以下命令:
keytool -list -keystore %USERPROFILE%\.android\debug.keystore
这是我们可以在FireBase中使用的调试证书。

jei2mxaa

jei2mxaa6#

在找到这个解决方案之前,我犯了几个错误。除了Olaleye的答案之外,首先我们需要找到包含keytool.exe的Java文件夹(使用Visual Studio终端,使用以下命令获取路径:
Flutter 医生-v
将路径复制粘贴到File Eksplorer并在文件夹Java内运行CMD终端,使用从Google复制粘贴的命令

keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

之前我错误地复制粘贴命令包括反斜杠符号里面它只是它在谷歌页面中显示的东西,因此终端不知道它。
然后输入默认密码:android我们将获得SHA1和SHA 256的详细信息。

4szc88ey

4szc88ey7#

在你的系统中安装Java jdk文件,并添加jdk-19/bin的环境变量路径。通过这种方法我可以修复我的问题

相关问题