2011-07-06 105 views
16

我正在嘗試簽署我的Android應用,以便我可以在Market中發佈它。當我生成密鑰庫時,我得到一個訪問被拒絕的錯誤。我該如何解決?爲Android應用創建密鑰存儲時拒絕訪問

android keystore selection

這是我一直在努力做的事:在Eclipse赫利俄斯

  1. 右鍵單擊項目。
  2. Android工具>導出已簽名的應用程序包。
  3. 點擊下一步。
  4. 我檢查「創建新的密鑰庫」,並意識到它無助於我。它仍然要求密鑰庫的位置。所以我決定這麼做很難。
  5. 關閉C:\Program Files\Java\jdk1.6.0_25\bin的只讀訪問權限,並授予CREATOR OWNER組完全控制該文件夾的權限。
  6. 在Windows 7 64位上打開命令行。
  7. 遍歷爲C:\Program Files\Java\jdk1.6.0_25\bin
  8. 運行keytool。
  9. 得到拒絕訪問錯誤。

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) 

編輯:

每次我檢查了文件夾的權限,我看到它回到只讀恢復。每當我關閉只讀時都沒有錯誤。

+1

我有同樣的問題。嘗試以管理員身份運行cmd。 – Quethzel

回答

25

它的確幫助你。您必須指定將生成的文件的位置。例如,指定C:\ Documents and Settings \ loginname \ market.keystore

+1

以及如何通過cmd指定此路徑? – portfoliobuilder

8

Android SDK需要訪問的密鑰庫與JDK不同。您可以簡單地使用Android嚮導的「創建新密鑰庫」選項,並選擇任何您有寫入權限的文件夾:該向導將創建一個新的密鑰庫。您不需要使用keytool格式的JDK。

+0

這應該是創建密鑰庫文件的簡單且唯一的方法。重要的是要記住用「.jks」結束你選擇的文件名。 – peresisUser

1

我有同樣的問題。您需要定義您的JAVA_HOME環境變量。

閱讀「有關簽約基本設置」這個鏈接的一段話:http://developer.android.com/guide/publishing/app-signing.html#setup

它說:

在開始之前,請確保Keytool實用和的jarsigner工具可向SDK構建工具。這兩個工具都可以在JDK中找到。在大多數情況下,您可以通過設置JAVA_HOME環境變量來告訴SDK構建工具如何找到這些實用程序,以便它引用合適的JDK。或者,您可以將JDK版本的Keytool和Jarsigner添加到PATH變量中。

如果您正在開發基於GNU Compiler for Java的Linux版本,請確保系統使用的是Keytool的JDK版本,而不是gcj版本。如果Keytool已經在您的PATH中,它可能指向/ usr/bin/keytool上的符號鏈接。在這種情況下,請檢查符號鏈接目標以確保它指向JDK中的Keytool。

0

如果您使用的是Windows 7,請確保您以管理員身份運行eclipse。

+0

因爲我在命令行(keygen工具)中運行它,我需要以管理員身份運行命令行,之後它就能正常工作,並且我沒有更多的拒絕訪問消息。 – AgentKnopf

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。 完成一切後,您可以重新分配「只讀」權限。 祝你好運!

0

chagning只讀在Windows 7幫助我。不要忘了默認密碼「的changeit」

37

下面的步驟爲我工作:

  1. 運行命令提示符以管理員身份

  2. 未選中只讀選項C:\Program Files\Java\jdk1.6.0_25\bin這可能並不需要

  3. keytool -genkey -v -keystore d:\my_private_key.keystore -alias my_key_alias -keyalg RSA -keysize 2048 -validity 10000

告訴它在驅動器D:中創建它。

+0

感謝這幫助 – ThatAwesomeCoder

+0

對我來說主要是作爲管理員運行,這不是我默認的。 cmd.exe位於C:\ Windows \ System32中 – peresisUser

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

0

看來,這是更容易通過keytool和最新的genkeypair方法在命令行中完成。我完成了以下情況:

keytool -genkeypair -keystore ~/.android/release.keystore -alias <my_alias> -storepass <my_cert_pass> -keyalg RSA 

然後我得到了我的別名有關名稱,組織機構,位置和密碼一組問題,就是這樣!

0

開放命令提示符作爲管理員幫我(對於Windows 8.1)

0

運行Eclipse作爲管理員解決問題,然後鍵入以下內容:

keytool -genkey -v -keystore NAME-mobileapps.keystore -alias NAMEmobileapps -keyalg RSA -keysize 2048 -validity 10000 

希望它幫助?

2

訪問被拒絕,因爲您不是管理員。

只需以管理員身份打開cmd提示符 - 即可爲我工作。

相關問題