Доступ запрещен при создании keystore для Android app
Я пытаюсь подписать свое приложение для Android, чтобы я мог выпустить его на рынок. Когда я создаю хранилище ключей, я получаю ошибку отказа в доступе. Как это исправить?
это то, что я пытаюсь сделать:
- щелкните правой кнопкой мыши проект в Eclipse Helios.
- Android Tools > Экспорт Подписанного Пакета Приложений.
- Нажмите кнопку Далее.
- я проверяю "создать новое хранилище ключей" и понимаю, что он ничего не делает, чтобы помочь мне. Он все еще спрашивает о местоположении keystore. Поэтому я решаю сделать это трудным путем.
- выключен доступ только для чтения на
C:Program FilesJavajdk1.6.0_25bin
иCREATOR OWNER
группировать полный контроль над папкой. - Откройте командную строку в 64-разрядной версии Windows 7.
- перейти в
C:Program FilesJavajdk1.6.0_25bin
. - запустить keytool.
- получил ошибку отказа в доступе.
.
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.хранилища ключей
ниже шаги работали для меня:
запустить командную строку от имени администратора
снимите флажок только для чтения в
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
скажите ему, чтобы создать его в 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. Как только все будет сделано, вы можете повторно назначить разрешение "только для чтения". Удачи!
убедитесь, что в этом месте нет другого файла хранилища ключей 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
затем я получил набор вопросов относительно имени, организации, местоположения и пароля для моего псевдонима, и это было все!
запуск eclipse от имени администратора решите проблему, затем введите следующее:
keytool -genkey -v -keystore NAME-mobileapps.keystore -alias NAMEmobileapps -keyalg RSA -keysize 2048 -validity 10000
надеюсь, что это поможет?