我正在尝试签署我的Android应用,以便我可以在Market中发布它。当我生成密钥库时,我收到拒绝访问错误。我该如何解决这个问题?
这就是我一直在尝试做的事情:
C:\Program Files\Java\jdk1.6.0_25\bin
上的只读访问权限,并授予CREATOR OWNER
组对该文件夹的完全控制权。C:\Program Files\Java\jdk1.6.0_25\bin
。
C:\Program Files\Java\jdk1.6.0_25\bin>keytool -genkey -v -alias company -keyalg R
SA -keysize 2048 -validity 10000 -keystore company.keystore
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: John Smith
What is the name of your organizational unit?
[Unknown]: Android
What is the name of your organization?
[Unknown]: Company
What is the name of your City or Locality?
[Unknown]: Albany
What is the name of your State or Province?
[Unknown]: NY
What is the two-letter country code for this unit?
[Unknown]: US
Is CN=John Smith, OU=Android, O=Company, L=Albany, ST=NY, C=US correct?
[no]: yes
Generating 2,048 bit RSA key pair and self-signed certificate (SHA1withRSA) with
a validity of 10,000 days
for: CN=John Smith, OU=Android, O=Company, L=Albany, ST=NY, C=US
Enter key password for <veetle>
(RETURN if same as keystore password):
Re-enter new password:
[Storing company.keystore]
keytool error: java.io.FileNotFoundException: veetle.keystore (Access is denied)
java.io.FileNotFoundException: veetle.keystore (Access is denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
at java.io.FileOutputStream.<init>(FileOutputStream.java:84)
at sun.security.tools.KeyTool.doCommands(KeyTool.java:902)
at sun.security.tools.KeyTool.run(KeyTool.java:172)
at sun.security.tools.KeyTool.main(KeyTool.java:166)
每次检查文件夹权限时,我都会看到它已恢复为只读。每当我关闭只读时都没有错误。
答案 0 :(得分:50)
以下步骤对我有用:
以管理员身份运行命令提示符
取消选中C:\Program Files\Java\jdk1.6.0_25\bin
中的只读选项可能不需要
keytool -genkey -v -keystore d:\my_private_key.keystore -alias my_key_alias -keyalg RSA -keysize 2048 -validity 10000
告诉它在驱动器D:
中创建它。
答案 1 :(得分:32)
它确实对你有帮助。您必须指定生成 的文件的位置。例如,指定 C:\ Documents and Settings \ loginname \ market.keystore
答案 2 :(得分:8)
Android SDK需要访问的密钥库与JDK不同。您只需使用Android向导的“创建新密钥库”选项,并选择您具有写入权限的任何文件夹:向导将在那里创建一个新的密钥库。您不需要使用keytool形式的JDK。
答案 3 :(得分:4)
拒绝访问,因为您不是管理员。
只需以管理员身份打开cmd提示符 - 这对我有用。
答案 4 :(得分:1)
我遇到了同样的问题。您需要定义JAVA_HOME环境变量。
阅读此链接的“基本设置签名”段落:http://developer.android.com/guide/publishing/app-signing.html#setup
它说:
在开始之前,请确保SDK构建工具可以使用Keytool实用程序和Jarsigner实用程序。这两个工具都可以在JDK中找到。在大多数情况下,您可以通过设置JAVA_HOME环境变量来告诉SDK构建工具如何找到这些实用程序,以便它引用合适的JDK。或者,您可以将JDK版本的Keytool和Jarsigner添加到PATH变量中。
如果您在最初使用GNU Compiler for Java的Linux版本上进行开发,请确保系统使用的是Keytool的JDK版本,而不是gcj版本。如果Keytool已经在你的PATH中,它可能指向/ usr / bin / keytool的符号链接。在这种情况下,请检查符号链接目标以确保它指向JDK中的Keytool。
答案 5 :(得分:1)
在没有Eclipse的情况下解决win7(yuk)上的问题: 我将环境变量JAVA_HOME设置为.... / JDK1.7.0_03(从GLbasic编程的android),我只做了两件事来解决问题: 1)在文件夹.... / Java / JDK1.7.0_03中,我删除了/ bin子文件夹的“只读”权限,其中包含keytool.exe。 2)我以“管理员”的身份打开控制台(虽然这是我win7上唯一的帐号)。 然后你做CD ... JDK / bin,再次运行keytool.exe,你得到JDK / bin中自动生成的文件nickname.keystore。 一切都完成后,您可以重新分配“只读”权限。 祝你好运!
答案 6 :(得分:0)
如果您使用的是 Windows 7 ,请确保以管理员身份运行eclipse。
答案 7 :(得分:0)
在Windows 7上更改只读帮助了我。不要忘记默认密码“changeit”
答案 8 :(得分:0)
确保此位置没有其他密钥库文件C:\ Program Files \ Java \ jdk1.6.0_25 \ bin。如果有,请将其保留在其他位置并再次尝试该命令:
keytool -genkey -v -keystore d:\ my_private_key.keystore -alias my_key_alias -keyalg RSA -keysize 2048 -validity 10000
答案 9 :(得分:0)
似乎通过 keytool 和最新的 genkeypair 方法在命令行中更容易实现。我完成了以下任务:
keytool -genkeypair -keystore ~/.android/release.keystore -alias <my_alias> -storepass <my_cert_pass> -keyalg RSA
然后我得到了一些关于我的别名的名称,组织,位置和密码的问题,就是这样!
答案 10 :(得分:0)
以管理员身份打开命令提示符帮助我。(对于Windows 8.1)
答案 11 :(得分:0)
以管理员身份运行eclipse解决问题,然后输入以下内容:
keytool -genkey -v -keystore NAME-mobileapps.keystore -alias NAMEmobileapps -keyalg RSA -keysize 2048 -validity 10000
希望有帮助吗?
答案 12 :(得分:0)
如果您使用的是Mac,请在命令的开头添加“ sudo” “ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-别名-keyalg RSA -keysize 2048 -validity 10000“