662

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

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

4

12 回答 12

654

要回答标题中的问题,您需要使用任何标准 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

于 2013-03-11T02:06:20.490 回答
186

Signing Your App in Android Studio

To sign your app in release mode in Android Studio, follow these steps:

1- On the menu bar, click Build > Generate Signed APK.


2-On the Generate Signed APK Wizard window, click Create new to create a new keystore. If you already have a keystore, go to step 4.


3- On the New Key Store window, provide the required information as shown in figure Your key should be valid for at least 25 years, so you can sign app updates with the same key through the lifespan of your app.

enter image description here

4- On the Generate Signed APK Wizard window, select a keystore, a private key, and enter the passwords for both. Then click Next.enter image description here

5- On the next window, select a destination for the signed APK and click Finish. enter image description here

referance

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

于 2015-04-14T07:36:14.760 回答
120

我疯狂地寻找如何在 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国家短代码。例如:对于美国是“美国”
  • alias应用程序的标识符作为 .keystore 中的单个实体(它可以有很多)

  • keypass用于保护该特定别名的密码。
  • keystore创建.keystore文件的路径(标准扩展名实际上是.ks
  • storepass用于保护整个.keystore内容的密码。
  • 有效期应用程序在此.keystore中有效的天数

它对我来说效果很好,它不会在控制台中要求任何其他内容,只是创建文件。有关详细信息,请参阅keytool - 密钥和证书管理工具

于 2015-01-22T22:21:24.257 回答
96

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

  1. 打开命令行:

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved
    
    // (if you want to store keystore file at C:/ open command line with RUN AS ADMINISTRATOR)
    
    C:\Windows\system32> keytool -genkey -v -keystore [your keystore file path]{C:/index.keystore} -alias [your_alias_name]{index} -keyalg RSA -keysize 2048 -validity 10000[in days]
    
  2. Enter > 它会提示您输入密码 > 输入密码(它将是不可见的)

    Enter keystore password:
    Re-enter new password:
    
  3. 输入 > 它会询问您的详细信息。

    What is your first and last name?
     [Unknown]:  {AB} // [Your Name / Name of Signer] 
    What is the name of your organizational unit?
     [Unknown]:  {Self} // [Your Unit Name] 
    What is the name of your organization?
     [Unknown]:  {Self} // [Your Organization Name] 
    What is the name of your City or Locality?
     [Unknown]:  {INDORE} // [Your City Name] 
    What is the name of your State or Province?
     [Unknown]:  {MP} //[Your State] 
    What is the two-letter country code for this unit?
     [Unknown]:  91
    
  4. 输入 > 输入 Y

    Is CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91 correct?
    [no]:  Y
    
  5. 输入 > 再次输入密码。

    Generating 2,048 bit RSA key pair and self-signed certificate    (SHA256withRSA) with a validity of 10,000 days
        for: CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91
    Enter key password for <index> (RETURN if same as keystore password):
    Re-enter new password:
    

[ 存储 C:/index.keystore ]

  1. 你已经完成了!!!

在 Eclipse 中导出:

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

  1. 右键单击要导出的包并选择导出 在此处输入图像描述

  2. 选择导出 Android 应用程序 > 下一步 在此处输入图像描述

  3. 下一个
    在此处输入图像描述

  4. 选择使用现有密钥库 > 浏览 .keystore 文件 > 输入密码 > 下一步 在此处输入图像描述

  5. 选择别名 > 输入密码 > 下一步 在此处输入图像描述

  6. 浏览 APK 目的地 > 完成 在此处输入图像描述

在 Android Studio 中:

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

  1. 单击构建 (ALT+B) >生成签名的 APK...
    在此处输入图像描述

  2. 单击新建..(Alt+C)
    在此处输入图像描述

  3. 浏览密钥库路径 (SHIFT+ENTER) > 选择路径 > 输入名称 >确定 在此处输入图像描述

  4. 填写有关您的.jks/keystore文件 的详细信息在此处输入图像描述

  5. 下一个
    在此处输入图像描述

  6. 你的档案
    在此处输入图像描述

  7. 输入 Studio Master 密码(不知道的可以RESET) > OK 在此处输入图像描述

  8. 选择 *目标文件夹 * >构建类型

    release : for publish on app store
    debug : for debugging your application
    

    点击完成

    在此处输入图像描述

完毕 !!!

于 2015-05-15T07:33:53.323 回答
28

本教程:

http://techdroid.kbeanie.com/2010/02/sign-your-android-applications-for.html

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

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

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

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

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

于 2012-12-05T13:39:51.143 回答
14

我按照本指南创建了调试密钥库。

命令是:

keytool -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999
于 2014-08-05T13:34:32.497 回答
14

使用此命令创建 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"
于 2015-09-14T12:20:34.583 回答
5

首先要知道您是处于调试模式还是发布模式。来自开发者网站“有两种构建模式:调试模式和发布模式。您在开发和测试应用程序时使用调试模式。当您想要构建可以直接分发的应用程序的发布版本时,您可以使用发布模式给用户或在 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 <--这个链接几乎解释了你需要知道的一切。

于 2014-03-11T03:10:04.890 回答
2

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

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

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

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

小心

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

如何在 Android Studio 中导出项目?

于 2014-08-07T12:50:23.493 回答
2

我想建议只使用 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
于 2019-07-18T05:56:09.253 回答
0

基于@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'
        }
    }
于 2021-10-05T11:56:21.607 回答
-4

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

$ create-android-keystore quick

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

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

于 2019-07-29T18:05:57.477 回答