为Android应用程序创建密钥库时拒绝访问
我正在尝试签署我的Android应用程序,以便在市场上发布它。当我生成密钥库时,我得到一个拒绝访问错误。我该如何解决这个问题 这就是我一直想做的:为Android应用程序创建密钥库时拒绝访问,android,keytool,private-key,Android,Keytool,Private Key,我正在尝试签署我的Android应用程序,以便在市场上发布它。当我生成密钥库时,我得到一个拒绝访问错误。我该如何解决这个问题 这就是我一直想做的: 右键单击Eclipse Helios中的项目 Android工具>导出已签名的应用程序包 单击下一步 我检查了“创建新密钥库”,发现它对我毫无帮助。它仍然会询问密钥库的位置。所以我决定用艰难的方式去做 关闭对C:\Program Files\Java\jdk1.6.0\u 25\bin的只读访问,并授予创建者所有者对文件夹的完全控制权 在64位Wi
C:\Program Files\Java\jdk1.6.0\u 25\bin
的只读访问,并授予创建者所有者对文件夹的完全控制权
C:\ProgramFiles\Java\jdk1.6.0\u 25\bin
C:\ProgramFiles\Java\jdk1.6.0\u 25\bin>keytool-genkey-v-alias company-keyalg R
SA-密钥大小2048-有效期10000-密钥库公司.keystore
输入密钥库密码:
重新输入新密码:
你的名字和姓氏是什么?
[未知]:约翰·史密斯
您的组织单位名称是什么?
[未知]:安卓
你的组织名称是什么?
[未知]:公司
你所在的城市或地区叫什么名字?
[未知]:奥尔巴尼
你所在的州或省叫什么名字?
[未知]:纽约
这个单位的两个字母的国家代码是什么?
[未知]:美国
CN=John Smith,OU=Android,O=Company,L=Albany,ST=NY,C=US对吗?
[否]:是的
使用生成2048位RSA密钥对和自签名证书(SHA1 WithRSA)
有效期为10000天
代表:CN=John Smith,OU=Android,O=Company,L=Albany,ST=NY,C=US
输入的密钥密码
(如果与密钥库密码相同,则返回):
重新输入新密码:
[存储公司密钥库]
keytool错误:java.io.FileNotFoundException:veetle.keystore(访问被拒绝)
java.io.FileNotFoundException:veetle.keystore(访问被拒绝)
在java.io.FileOutputStream.open(本机方法)
位于java.io.FileOutputStream。(FileOutputStream.java:194)
位于java.io.FileOutputStream。(FileOutputStream.java:84)
位于sun.security.tools.KeyTool.doCommands(KeyTool.java:902)
运行(KeyTool.java:172)
位于sun.security.tools.KeyTool.main(KeyTool.java:166)
编辑:
每次检查文件夹权限时,我都会看到它已恢复为只读。每当我关闭只读时都没有错误。它确实对您有所帮助。您必须指定将生成的文件的位置。例如,指定C:\Documents and Settings\loginname\market.keystoreAndroid SDK需要访问的密钥库与JDK不同。您只需使用Android向导的“创建新密钥库”选项,并选择您具有写入权限的任何文件夹:向导将在其中创建一个新密钥库。您不需要从JDK使用keytool。我也有同样的问题。您需要定义JAVA_HOME环境变量 阅读此链接的“签名的基本设置”段落: 它说: 开始之前,请确保SDK构建工具可以使用Keytool实用程序和Jarsigner实用程序。这两种工具都可以在JDK中使用。在大多数情况下,您可以通过设置JAVA_HOME环境变量使其引用合适的JDK来告诉SDK构建工具如何找到这些实用程序。或者,您可以将JDK版本的Keytool和Jarsigner添加到PATH变量中 如果您正在开发最初随GNU Compiler for Java附带的Linux版本,请确保系统使用的是JDK版本的Keytool,而不是gcj版本。如果Keytool已经在您的路径中,它可能指向/usr/bin/Keytool处的符号链接。在这种情况下,检查symlink目标以确保它指向JDK中的Keytool
如果您使用的是Windows 7,请确保您以管理员身份运行eclipse。修复不使用eclipse的win7(YK)上的问题: 我将环境变量JAVA_HOME设置为..../JDK1.7.0_03(android由GLbasic编程),我只做了两件事来解决这个问题: 1) 在..../Java/JDK1.7.0_03文件夹中,我删除了包含keytool.exe的/bin子文件夹的“只读”权限。 2) 我以管理员身份打开了控制台(尽管它是我win7上唯一的帐户)。 然后执行cd…JDK/bin,再次运行keytool.exe,并在JDK/bin中自动生成昵称.keystore文件。 完成所有操作后,您可以重新分配“只读”权限。
祝你好运 在Windows7上只阅读chagning对我有帮助。不要忘记默认密码“changeit”以下步骤对我很有用:
C:\Program Files\Java\jdk1.6.0\u 25\bin
中的只读选项,这可能不是必需的keytool-genkey-v-keystore d:\my_private_key.keystore-alias my_key\u alias-keyalg RSA-keysize 2048-validity 10000
告诉它在驱动器
D:
中创建它,确保此位置C:\Program Files\Java\jdk1.6.0\U 25\bin没有其他密钥库文件。如果有,请将其保留在其他位置,然后重试该命令:
keytool-genkey-v-keystore d:\my_private_key.keystore-alias my_key_alias-keyalg RSA-keysize 2048-validity 10000似乎通过keytool和最新的genkeypair方法更容易在命令行中实现。我完成了以下工作:
keytool -genkeypair -keystore ~/.android/release.keystore -alias <my_alias> -storepass <my_cert_pass> -keyalg RSA
keytool -genkey -v -keystore NAME-mobileapps.keystore -alias NAMEmobileapps -keyalg RSA -keysize 2048 -validity 10000
keytool-genkeypair-keystore~/.android/release.keystore-alias-storepass-keyalg RSA
然后我得到了一系列关于我的别名的名称、组织、位置和密码的问题,就是这样 以管理员身份打开命令提示符对我有帮助。(对于Windows 8.1)Runni
keytool -genkey -v -keystore NAME-mobileapps.keystore -alias NAMEmobileapps -keyalg RSA -keysize 2048 -validity 10000