Доступ запрещен при создании keystore для Android app

Я пытаюсь подписать свое приложение для Android, чтобы я мог выпустить его на рынок. Когда я создаю хранилище ключей, я получаю ошибку отказа в доступе. Как это исправить?

android keystore selection

это то, что я пытаюсь сделать:

  1. щелкните правой кнопкой мыши проект в Eclipse Helios.
  2. Android Tools > Экспорт Подписанного Пакета Приложений.
  3. Нажмите кнопку Далее.
  4. я проверяю "создать новое хранилище ключей" и понимаю, что он ничего не делает, чтобы помочь мне. Он все еще спрашивает о местоположении keystore. Поэтому я решаю сделать это трудным путем.
  5. выключен доступ только для чтения на C:Program FilesJavajdk1.6.0_25bin и CREATOR OWNER группировать полный контроль над папкой.
  6. Откройте командную строку в 64-разрядной версии Windows 7.
  7. перейти в C:Program FilesJavajdk1.6.0_25bin.
  8. запустить keytool.
  9. получил ошибку отказа в доступе.

.

C:Program FilesJavajdk1.6.0_25bin>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)

Edit:

каждый раз, когда я проверяю разрешения папки, я вижу что он вернулся только для чтения. Не было никаких ошибок, когда я выключил только для чтения.

12 ответов


Это поможет вам. Вы должны указать местоположение файла, который будет быть создан. Например, укажите C:\Documents и настройки\loginname\market.хранилища ключей


ниже шаги работали для меня:

  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

скажите ему, чтобы создать его в drive D:.


хранилище ключей, к которому требуется доступ Android SDK, не совпадает с JDK. Вы можете просто использовать опцию "Создать новое хранилище ключей" мастера Android и выбрать любую папку, к которой у вас есть доступ для записи: мастер создаст там новое хранилище ключей. Вам не нужно использовать keytool form JDK.


Доступ запрещен, потому что вы не являетесь администратором.

просто откройте приглашение cmd в качестве администратора-это сработало для меня.


У меня была та же проблема. Вам нужно определить переменную среды JAVA_HOME.

прочитайте абзац "базовая настройка для подписания" этой ссылки:http://developer.android.com/guide/publishing/app-signing.html#setup

Он говорит:

прежде чем начать, убедитесь, что утилита Keytool и утилита Jarsigner доступны для инструментов сборки SDK. Оба эти средства доступны в JDK. В большинстве случаев, вы можете сказать SDK build tools как найти эти утилиты, установив переменную среды JAVA_HOME, чтобы она ссылалась на подходящий JDK. Кроме того, вы можете добавить версию JDK Keytool и Jarsigner в переменную PATH.

Если вы разрабатываете версию Linux, которая первоначально поставляется с компилятором GNU для Java, убедитесь, что система использует версию Keytool JDK, а не версию gcj. Если Keytool уже находится на вашем пути, он может указывать на символическую ссылку на / usr / bin / keytool. В этом случае проверьте цель символической ссылки, чтобы убедиться, что она указывает на Keytool в JDK.


исправление проблемы на win7 (yuk) без Eclipse: у меня установлена переменная среды JAVA_HOME ....JDK1.7.0_03 (Android запрограммирован из GLbasic), и я сделал только 2 вещи, чтобы исправить проблему: 1) в папке ..../ Java / JDK1.7.0_03 я удалил разрешение "только для чтения" подпапки /bin, которая содержит keytool.исполняемый. 2) я открыл консоль "как администратор" (хотя это единственная учетная запись на моем win7). затем вы делаете cd...JDK / bin, запустите снова keytool.exe, и вы получаете файл прозвище.хранилище ключей автоматически генерируется в JDK / bin. Как только все будет сделано, вы можете повторно назначить разрешение "только для чтения". Удачи!


chagning читать только на windows 7 помог мне. не забудьте пароль по умолчанию "changeit"


Если вы используете Windows 7, убедитесь, что вы используете Eclipse в качестве администратора.


убедитесь, что в этом месте нет другого файла хранилища ключей C:\Program файлы\Java\jdk1.6.0_25\bin. Если есть, держите его где-то еще и повторите команду:

keytool-genkey-v-keystore d:\my_private_key - ... keystore-псевдоним my_key_alias-keyalg RSA-keysize 2048-действительность 10000


Кажется, что это проще сделать в командной строке через keytool и последний genkeypair подход. Кончил я следующим:--6-->

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

затем я получил набор вопросов относительно имени, организации, местоположения и пароля для моего псевдонима, и это было все!


открытие командной строки в качестве администратора помогло мне.(Для Windows 8.1)


запуск eclipse от имени администратора решите проблему, затем введите следующее:

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

надеюсь, что это поможет?