为 android 创建密钥库的步骤是什么?
我需要在我的应用程序中使用谷歌地图,但我不知道我错过了哪些步骤。请向我提供具体的详细步骤(我从指南中没有理解)。
要回答标题中的问题,您需要使用任何标准 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
在 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
Build > Generate Signed Bundle/APK...
!因为如果您克隆一个项目并尝试编译它,它将需要 keystore.jks
,但要创建 keystore.jks
,您必须构建 gradle 文件才能启用菜单!要克服这个障碍,您应该编辑 build.gradle
并注释 signingConfig signingConfigs.release
,然后注释设置密钥库属性的行。之后同步 build.gradle
并尝试再次编译 (Ctrl+F9)。
我疯狂地寻找如何在 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 参数指出它。
./file.keystore
这样的相对路径可能会更容易,因为它是在您的用户希望拥有权限的当前目录中创建的,而使用 /path/file.keystore
要求您的用户对来自 /
的完整路径具有权限,并且 {4 } 文件夹存在。
从命令行创建密钥库文件:
打开命令行: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
完毕 !!!
本教程:
“签署-你的-android-applications-for.html”
第一次创建密钥库时对我很有帮助。这很简单,但是 developer.android.com 上的说明有点太简短了。
我不确定的部分是保存在哪里以及给密钥库文件取什么名字。
我似乎把它放在哪里并不重要,只要确保它安全并保留一些备份。我只是把它放在我的应用程序目录中
将文件命名为“something.keystore”,其中的东西可以是您想要的任何东西。我使用了 app_name.keystore,其中 app_name 是我的应用程序的名称。
下一部分是如何命名别名。同样,这似乎并不重要,所以我再次使用了 app_name。保持密码与您之前使用的相同。填写其余字段,您就完成了。
使用此命令创建 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"
我按照 this guide 创建了调试密钥库。
命令是:
keytool -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999
首先要知道您是处于调试模式还是发布模式。来自开发者网站“有两种构建模式:调试模式和发布模式。您在开发和测试应用程序时使用调试模式。当您想要构建可以直接分发的应用程序的发布版本时,您可以使用发布模式给用户或在 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 <-- 这个链接几乎解释了你需要知道的一切。
基于@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'
}
}
您可以通过导出已签名的 APK 来创建您的密钥库。当您尝试导出/构建签名的 APK 时,它会要求提供密钥库。
您可以选择现有的密钥库,也可以通过单击创建新密钥库轻松创建一个新密钥库
这里有一个非常有用的链接,并且很好地解释了如何创建您的密钥库并生成签名的 APK
此链接解释了如何使用 Android Studio 进行操作,但如果我记得,它在 Eclipse 上非常相似
小心
生成密钥库后,请将其保存在安全的地方,因为您将需要它来重新生成新的签名 APK。
How do I export a project in the Android studio?
我想建议只使用 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
如果不想或不能使用 Android Studio,可以使用 create-android-keystore NPM 工具:
$ create-android-keystore quick
这会在当前目录中生成一个新生成的密钥库。
更多信息:https://www.npmjs.com/package/create-android-keystore
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