我从未为我的密钥库和别名设置过任何密码,那么它们是如何创建的?

147
当我阅读一些关于“签名Android应用程序”的文章时,我看到了一些标题如“如何签名应用程序”以及关于“如果您丢失了密钥库文件或密码怎么办”的内容。
我要问的问题是,我从未创建过密钥库,也没有别名或密码,那么我怎么可能忘记它呢?
我知道对于Android应用程序,我们使用默认密码android,那么如果密码默认为android,怎么会有人会忘记呢?(我相信必须有其他方法来创建新的密钥库)。
最后,如果android是默认密码,那么默认别名是什么?
6个回答

435

调试模式下的登录

Android构建工具提供了一种调试签名模式,使您更容易开发和调试应用程序,同时仍满足Android系统对APK签名的要求。在使用调试模式构建应用程序时,SDK工具会调用Keytool自动创建调试密钥库和密钥。然后使用此调试密钥自动签署APK,因此您不需要使用自己的密钥对包进行签名。

SDK工具使用预定名称/密码创建调试密钥库/密钥:

Keystore name: "debug.keystore"
Keystore password: "android"
Key alias: "androiddebugkey"
Key password: "android"
CN: "CN=Android Debug,O=Android,C=US"

如果需要,您可以更改调试密钥库/密钥的位置/名称或提供自定义调试密钥库/密钥以使用。但是,任何自定义调试密钥库/密钥都必须使用与默认调试密钥相同的密钥库/密钥名称和密码(如上所述)。 (在Eclipse / ADT中执行此操作,请转到Windows> Preferences> Android> Build。)

注意:使用调试证书签名的应用程序无法发布给公众。

来源:Developer.Android


非常有用的信息。我接受它作为答案。先生,还有一个问题。单个密钥库是否有多个密钥,或者密钥库和密钥是同一件事? - Anas Azeem
一个密钥库可以有很多密钥,您将不得不为密钥创建不同的别名。我认为现在密钥和密钥库之间的区别已经很清楚了。密钥库是密钥的容器。 - user2730944
我用它来签署一个无法安装的未签名 APK:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore my_unsigned.apk androiddebugkey - Ivan Morgillo
@user2730944,您能否详细说明一下您是如何发现密码为“android”的呢?因为从您提供的源代码中并没有明显的线索。 - spin_eight

25

如果您想在Gradle中进行配置,则应该像这样:

signingConfigs {
        debug {
            storeFile file('PATH_TO_HOME/.android/debug.keystore')
            storePassword 'android'                   
            keyAlias 'AndroidDebugKey'
            keyPassword 'android'                     
        }
        ...
}

5
Keystore name: "debug.keystore"

Keystore password: "android"

Key alias: "androiddebugkey"

Key password: "android"

我使用这些信息并成功生成签名APK。

3

当我们在Eclipse中运行应用程序时,Apk默认由Android提供的密钥库签名。

但是,如果您想要将应用程序上传到Play商店,则需要创建自己的密钥库。 Eclipse已经提供了GUI界面来创建新的密钥库。 您也可以通过命令行创建密钥库。

默认别名为

androiddebugkey

谢谢您的回答,但是您有没有想过密钥的密码是什么,因为密钥库的密码是“android”(如果我没记错的话)。 - Anas Azeem

2
比所有选项都更好的是,您可以将您的signingConfig设置为等于您的debug.signingConfig。要做到这一点,您只需要按照以下步骤操作:
android {
  ...
  buildTypes {
    ...
    wantedBuildType {
      signingConfig debug.signingConfig
    }
  }
}

有了这个,您就不需要知道 debug.keystore 在哪里,应用程序将适用于所有团队,即使有人使用不同的环境。


太好了!这是使debugProguard构建类型可安装的简洁方法。 - Jerry101

1
所有这些答案,仍然只有一个遗漏。当您在开发控制台的Google API部分创建身份验证凭据时,请确保(特别是如果这是您的第一个凭据)已单击“同意屏幕”选项。如果您没有填写“标题”和任何其他必填字段,则调用将因此选项而失败。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接