ChatGPT解决这个技术问题 Extra ChatGPT

如何创建密钥库?

为 android 创建密钥库的步骤是什么?

我需要在我的应用程序中使用谷歌地图,但我不知道我错过了哪些步骤。请向我提供具体的详细步骤(我从指南中没有理解)。

您是否已经做过任何事情,或者您是否正在寻找开始的建议?
这些是我完成的以下步骤:1-安装eclipse 2-安装jdk 3-安装sdk 4-安装android插件。我没有设法在win cmd中执行命令,命令: $ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 (生成私钥)。谢谢
@user482762:CommonsWare 的回答对你有用吗?为什么你没有设法执行win cmd?
CommonsWare 的答案对我不起作用,当我尝试在 cmd 中执行命令时,我收到一条错误消息:“$ 未被识别为内部或外部命令、可运行程序或批处理文件”。感谢您的帮助
啊!您不想实际键入 $。在 Windows 上,当您使用命令行(cmd 应用程序)时,输入提示通常看起来像 DRIVE:/DIRECTORY>,像 "c:\" 。在 unix 上,提示通常看起来像“$”或只是“>”。命令中的“$”表示输入提示,而不是命令的一部分。尝试使用所有参数运行 keytool,不带 $.

J
João Pimentel Ferreira

要回答标题中的问题,您需要使用任何标准 JDK 发行版附带的 Java Keytool 实用程序创建一个密钥库,该实用程序位于 %JAVA_HOME%\bin。在 Windows 上,这通常是 C:\Program Files\Java\jre7\bin

在 Windows 上,打开命令窗口并切换到该目录。在 Linux 类型的操作系统上,对终端执行相同操作。然后运行:

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

Keytool 会提示您提供密钥库的密码,提供专有名称字段,然后提供您的密钥的密码。然后它将密钥库生成为您所在目录中名为 my-release-key.keystore 的文件。密钥库和密钥受您输入的密码保护。密钥库包含一个密钥,有效期为 10000 天。 alias_name 是您稍后将使用的名称,用于在签署您的应用程序时引用此密钥库。

有关 Keytool 的详细信息,请参阅文档:http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

有关签署 Android 应用程序的更多信息,请访问此处:http://developer.android.com/tools/publishing/app-signing.html


很好地定义 -keysize 2048 而不是默认的 1024 我现在正在使用 4096
有关信息,就我而言,我需要以管理员权限打开命令窗口
这给了我: E/TokenRequestor: 你有错误的 OAuth2 相关配置,请检查。详细错误:UNREGISTERED_ON_API_CONSOLE 我已经通过在 API 控制台中输入我的 SHA1 创建了一个凭证。
我使用了这个设置 2 个密码的命令,以便您跳过一些提示:keytool -genkey -v -keystore debug.keystore -storepass android -alias android -keypass android -keyalg RSA -keysize 2048 -validity 10000。然后生成您需要放入 Firebase 的 SHA-1:keytool -list -v -keystore debug.keystore -alias android -storepass android -keypass android
立即测试您的结果并从您的创作中获取指纹:keytool -list -v -keystore my-release-key.keystore -alias alias_name -storepass mypassword -keypass mypassword
C
Community

在 Android Studio 中为您的应用签名

要在 Android Studio 中以发布模式签署您的应用,请执行以下步骤:

1- 在菜单栏上,单击构建 > 生成签名的 APK。

2-在 Generate Signed APK Wizard 窗口中,单击 Create new 以创建新的密钥库。如果您已有密钥库,请转到步骤 4。

3- 在 New Key Store 窗口中,提供如图所示的所需信息。您的密钥应至少有效 25 年,因此您可以在应用程序的整个生命周期内使用相同的密钥签署应用程序更新。

https://i.stack.imgur.com/SjcOa.png

4- 在 Generate Signed APK Wizard 窗口中,选择一个密钥库、一个私钥,然后输入两者的密码。然后单击下一步。 5- 在下一个窗口中,选择已签名 APK 的目标位置,然后单击完成。

参考

http://developer.android.com/tools/publishing/app-signing.html


虽然这个答案是正确的,但只有在您已经安装了 android studio 时才方便。
虽然这个答案是正确的,但您甚至可以没有 Build > Generate Signed Bundle/APK...!因为如果您克隆一个项目并尝试编译它,它将需要 keystore.jks,但要创建 keystore.jks,您必须构建 gradle 文件才能启用菜单!要克服这个障碍,您应该编辑 build.gradle 并注释 signingConfig signingConfigs.release,然后注释设置密钥库属性的行。之后同步 build.gradle 并尝试再次编译 (Ctrl+F9)。
t
tormuto

我疯狂地寻找如何在 shell 中使用单行命令生成 .keystore,这样我就可以从另一个应用程序运行它。这是这样的:

echo y | keytool -genkeypair -dname "cn=Mark Jones, ou=JavaSoft, o=Sun, c=US" -alias business -keypass kpi135 -keystore /working/android.keystore -storepass ab987c -validity 20000

dname 是 .keystore 中应用程序的唯一标识符 cn 是生成 .keystore 的个人或组织的全名 ou 创建项目的组织单元,它是创建项目的组织的细分。前任。 android.google.com o 整个项目的组织所有者。它的范围比ou更高。例如:google.com c 国家/地区短代码。例如:对于美国是“美国”

cn 生成 .keystore 的个人或组织的全名

ou 创建项目的组织单位,它是创建项目的组织的一个分支。前任。 android.google.com

o 整个项目的组织所有者。它的范围比ou更高。例如:google.com

c 国家短代码。例如:对于美国是“美国”

alias 应用程序的标识符作为 .keystore 中的单个实体(它可以有很多)

keypass 用于保护该特定别名的密码。

keystore 创建 .keystore 文件的路径(标准扩展名实际上是 .ks)

storepass 用于保护整个 .keystore 内容的密码。

有效期 应用程序在此 .keystore 中有效的天数

它对我来说效果很好,它不会在控制台中要求任何其他内容,只是创建文件。有关详细信息,请参阅 keytool - Key and Certificate Management Tool


我从来没有遇到过这种错误,但尝试触摸 /path/file.keystore 并使用 storepass 参数指出它。
效果很好!我唯一的改变是我使用扩展名 .jks for Android
jks 是一般的 official keystore extension for java,但 keystore 是推荐用于 android apps 的一个。
@eliasbagley 那是因为上面写的命令 -storepass 从另一行开始。将所有内容写在一行上,就可以了。
使用像 ./file.keystore 这样的相对路径可能会更容易,因为它是在您的用户希望拥有权限的当前目录中创建的,而使用 /path/file.keystore 要求您的用户对来自 / 的完整路径具有权限,并且 {4 } 文件夹存在。
I
Iamat8

从命令行创建密钥库文件:

打开命令行:Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利 //(如果要将密钥库文件存储在 C:/ 使用 RUN AS ADMINISTRATOR 打开命令行) C:\Windows\system32> keytool -genkey -v -keystore [您的密钥库文件路径]{C:/index .keystore} -alias [your_alias_name]{index} -keyalg RSA -keysize 2048 -validity 10000[in days] Enter > 它会提示你输入密码 > 输入密码(它会不可见) Enter keystore password: 重新输入新密码:输入 > 它会询问您的详细信息。你的名字和姓氏是什么? [未知]: {AB} // [您的姓名/签名者姓名] 您的组织单位的名称是什么? [未知]:{Self} // [您的单位名称] 您的组织名称是什么? [未知]:{Self} // [您的组织名称] 您所在城市或地区的名称是什么? [未知]:{INDORE} // [您的城市名称] 您所在的州或省的名称是什么? [Unknown]: {MP} //[Your State] 这个单位的两个字母的国家代码是什么? [未知]: 91 Enter > Enter Y CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91 是否正确? [否]:Y Enter > 再次输入密码。生成 2,048 位 RSA 密钥对和自签名证书 (SHA256withRSA),有效期为 10,000 天:CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91 Enter key password for < index>(如果与密钥库密码相同,则返回):重新输入新密码:

存储 C:/index.keystore ]

你已经完成了!!!

在 Eclipse 中导出:

使用您创建的密钥库文件将您的 android 包导出到 .apk

右键单击要导出的包并选择导出选择导出Android应用程序>下一步下一步选择使用现有密钥库>浏览.keystore文件>输入密码>下一步选择别名>输入密码>下一步浏览APK目的地>完成

在 Android Studio 中:

在工作室中创建密钥库 [.keystore/.jks]...

单击 Build (ALT+B) > Generate Signed APK ... 单击 Create new ..(ALT+C) Browse Key store path (SHIFT+ENTER) > Select Path > Enter name > OK 填写有关您的 .jks/keystore 的详细信息file Next 你的文件 Enter Studio Master Password (如果你不知道可以重置) > OK Select *Destination Folder * > Build Type release : for publish on app store debug : 调试你的应用 点击 Finish

完毕 !!!


b
birdman

本教程:

“签署-你的-android-applications-for.html”

在此存档:https://web.archive.org/web/20181002011446/http://techdroid.kbeanie.com/2010/02/sign-your-android-applications-for.html

第一次创建密钥库时对我很有帮助。这很简单,但是 developer.android.com 上的说明有点太简短了。

我不确定的部分是保存在哪里以及给密钥库文件取什么名字。

我似乎把它放在哪里并不重要,只要确保它安全并保留一些备份。我只是把它放在我的应用程序目录中

将文件命名为“something.keystore”,其中的东西可以是您想要的任何东西。我使用了 app_name.keystore,其中 app_name 是我的应用程序的名称。

下一部分是如何命名别名。同样,这似乎并不重要,所以我再次使用了 app_name。保持密码与您之前使用的相同。填写其余字段,您就完成了。


这就是链接答案的问题.. :(已过期
这是archive.org 在该页面关闭之前从该页面存档的内容。此快照来自 2019 年:web.archive.org/web/20181002011446/http://techdroid.kbeanie.com/…
A
Aravin

使用此命令创建 debug.keystore

keytool -genkey -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"

D
Davide Pastore

我按照 this guide 创建了调试密钥库。

命令是:

keytool -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999

S
ShowLove

首先要知道您是处于调试模式还是发布模式。来自开发者网站“有两种构建模式:调试模式和发布模式。您在开发和测试应用程序时使用调试模式。当您想要构建可以直接分发的应用程序的发布版本时,您可以使用发布模式给用户或在 Google Play 等应用市场上发布。”

如果您处于调试模式,请执行以下操作... A. 打开终端并键入:

keytool -exportcert -alias androiddebugkey -keystore path_to_debug_or_production_keystore -list -v

注意:对于 Eclipse,调试密钥库通常位于 ~/.android/debug.keystore...

B. 当提示输入密码时,只需输入“android”...

C. 如果您处于发布模式,请按照...的说明进行操作

http://developer.android.com/tools/publishing/app-signing.html <-- 这个链接几乎解释了你需要知道的一切。


G
Geng Jiawen

基于@EliuX 答案,与应用程序包兼容的最新工具

echo y | keytool -genkey -keystore ./android.jks -dname "n=Mark Jones, ou=JavaSoft, o=Sun, c=US" -alias android -keypass android  -storepass android -keyalg RSA -keysize 2048 -validity 2000

对于您的 build.gradle

    signingConfigs {
        debug {
            storeFile file('android.jks')
            keyAlias 'android'
            keyPassword 'android'
            storePassword 'android'
        }
    }

C
Community

您可以通过导出已签名的 APK 来创建您的密钥库。当您尝试导出/构建签名的 APK 时,它会要求提供密钥库。

您可以选择现有的密钥库,也可以通过单击创建新密钥库轻松创建一个新密钥库

这里有一个非常有用的链接,并且很好地解释了如何创建您的密钥库并生成签名的 APK

此链接解释了如何使用 Android Studio 进行操作,但如果我记得,它在 Eclipse 上非常相似

小心

生成密钥库后,请将其保存在安全的地方,因为您将需要它来重新生成新的签名 APK。

How do I export a project in the Android studio?


V
Vlad

我想建议只使用 gradle 的自动方式

** 在最后一个命令中为密钥库定义至少一个附加参数,例如国家 '-dname', 'c=RU' **

apply plugin: 'com.android.application'

// define here sign properties
def sPassword = 'storePassword_here'
def kAlias = 'keyAlias_here'
def kPassword = 'keyPassword_here'

android {
    ...
    signingConfigs {
        release {
            storeFile file("keystore/release.jks")
            storePassword sPassword
            keyAlias kAlias
            keyPassword kPassword
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            shrinkResources true
            minifyEnabled true
            useProguard true
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    ...
}

...

task generateKeystore() {
    exec {
        workingDir projectDir
        commandLine 'mkdir', '-p', 'keystore'
    }
    exec {
        workingDir projectDir
        commandLine 'rm', '-f', 'keystore/release.jks'
    }
    exec {
        workingDir projectDir
        commandLine 'keytool', '-genkey', '-noprompt', '-keystore', 'keystore/release.jks',
            '-alias', kAlias, '-storepass', sPassword, '-keypass', kPassword, '-dname', 'c=RU',
            '-keyalg', 'RSA', '-keysize', '2048', '-validity', '10000'
    }
}

project.afterEvaluate {
    preBuild.dependsOn generateKeystore
}

这将在项目同步和构建时生成密钥库

> Task :app:generateKeystore UP-TO-DATE
> Task :app:preBuild UP-TO-DATE

那些 jks 文件是从哪里来的 为什么每个人都表现得好像这是一个秘密
@nikoss /app/keystore/release.jks
@nikoss jks 包含用于签署应用程序的私钥。所以从技术上讲,jks 不是秘密,但它确实包含秘密,所以你不希望它落入恶意手中。
K
Kaspi

如果不想或不能使用 Android Studio,可以使用 create-android-keystore NPM 工具:

$ create-android-keystore quick

这会在当前目录中生成一个新生成的密钥库。

更多信息:https://www.npmjs.com/package/create-android-keystore