2011-07-06 49 views
16

Estoy intentando firmar mi aplicación de Android para poder lanzarla en Market. Cuando genero el almacén de claves, obtengo un error de acceso denegado. ¿Cómo puedo solucionar esto?Acceso denegado al crear el almacén de claves para la aplicación de Android

android keystore selection

Esto es lo que he estado tratando de hacer:

  1. proyecto de clic derecho en Eclipse Helios.
  2. Android Tools> Export Signed Application Package.
  3. Haga clic en siguiente.
  4. Compruebo "Crear nuevo almacén de claves" y me doy cuenta de que no hace nada para ayudarme. Todavía pregunta por la ubicación del almacén de claves. Entonces decido hacerlo de la manera difícil.
  5. Se activó el acceso de solo lectura en C:\Program Files\Java\jdk1.6.0_25\bin y se otorgó al grupo CREATOR OWNER el control total de la carpeta.
  6. Abra la línea de comandos en Windows 7 de 64 bits.
  7. Traverse to C:\Program Files\Java\jdk1.6.0_25\bin.
  8. Ejecutar keytool.
  9. Tiene un error de acceso denegado.

.

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) 

Editar:

Cada vez que puedo comprobar los permisos de carpeta, veo que se ha vuelto de nuevo a sólo lectura. No hubo errores cada vez que desactivé la opción de solo lectura.

+1

Tuve el mismo problema. Intenta ejecutar cmd como administrador. – Quethzel

Respuesta

25

Te ayuda. Debe especificar la ubicación del archivo que se generará . Por ejemplo, especifique C: \ Documents and Settings \ nombre de inicio de sesión \ market.keystore

+1

y cómo se especifica esta ruta a través de cmd? – portfoliobuilder

8

El almacén de claves al que necesita acceder el SDK de Android no es el mismo que el JDK. Simplemente puede usar la opción "crear nuevo almacén de claves" del asistente de Android y elegir cualquier carpeta a la que tenga acceso de escritura: el asistente creará allí un nuevo almacén de claves. No necesita usar keytool desde JDK.

+0

Esta debería ser la manera fácil y única de crear un archivo de almacén de claves. Lo importante que debe recordar es finalizar el nombre de archivo que elija con ".jks". – peresisUser

1

Tuve el mismo problema. Necesita definir su variable de entorno JAVA_HOME.

Lea la "Configuración básica para la firma" párrafo de este enlace: http://developer.android.com/guide/publishing/app-signing.html#setup

Dice:

Antes de empezar, asegúrese de que la utilidad Keytool y utilidad Jarsigner están disponibles para la acumulación SDK herramientas. Ambas herramientas están disponibles en el JDK. En la mayoría de los casos, puede decirle a las herramientas de compilación de SDK cómo encontrar estas utilidades configurando su variable de entorno JAVA_HOME para que haga referencia a un JDK adecuado. Alternativamente, puede agregar la versión JDK de Keytool y Jarsigner a su variable PATH.

Si está desarrollando una versión de Linux que originalmente vino con GNU Compiler for Java, asegúrese de que el sistema esté utilizando la versión JDK de Keytool, en lugar de la versión gcj. Si Keytool ya está en su PATH, podría estar apuntando a un enlace simbólico en/usr/bin/keytool.En este caso, verifique el enlace simbólico objetivo para asegurarse de que apunta a Keytool en el JDK.

0

Si está utilizando Windows 7 , asegúrese de que está ejecutando el eclipse como administrador.

+0

Desde que lo ejecuté en la línea de comandos (la herramienta keygen) necesité ejecutar la línea de comando como administrador, después de eso funcionó y no obtuve más mensajes de Acceso denegado. – AgentKnopf

1

Solucionando el problema en win7 (yuk) sin Eclipse: tengo la variable de entorno JAVA_HOME establecida en ..../JDK1.7.0_03 (Android programada desde GLbasic), e hice solo 2 cosas para solucionar el problema : 1) en la carpeta ..../Java/JDK1.7.0_03 eliminé el permiso de "solo lectura" de la subcarpeta/bin, que contiene keytool.exe. 2) abrí la consola "como administrador" (aunque es la única cuenta en mi win7). luego haces cd ... JDK/bin, ejecutas nuevamente keytool.exe, y obtienes el archivo nickname.keystore generado automáticamente en JDK/bin. Una vez que haya terminado todo, podría volver a asignar el permiso de "solo lectura". ¡Buena suerte!

0

chagning leer solo en Windows 7 me ayudó. no se olvide la contraseña por defecto "changeit"

37

los pasos siguientes trabajó para mí: símbolo del sistema

  1. Ejecutar como administrador

  2. sin marcar, los leídos únicas opciones en C:\Program Files\Java\jdk1.6.0_25\binEsto puede no ser necesaria

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

Dígalo que lo cree en la unidad D:.

+0

gracias esto ayudó – ThatAwesomeCoder

+0

Lo principal para mí fue ejecutar como administrador, que no era el predeterminado para mí. cmd.exe se encuentra en C: \ Windows \ System32 – peresisUser

0

Asegúrese de que no hay otro archivo de almacén de claves en esta ubicación C: \ Archivos de programa \ Java \ jdk1.6.0_25 \ bin. Si hay, que sea en otro lugar y tratar de nuevo el comando:

herramienta de claves -genkey -v -keystore d: \ my_private_key.keystore -alias my_key_alias -keyalg RSA -keysize 2048 -validity 10000

0

parece que es más fácil de lograr en línea de comandos a través de keytool y el último genkeypair enfoque. Terminé con lo siguiente:

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

Entonces tuve una serie de preguntas en relación con el nombre, la organización, la ubicación y la contraseña de mis alias y eso fue todo!

0

mando de apertura del símbolo como administrador me ayudó (para Windows 8.1)

0

Ejecución de Eclipse como administrador de resolver el problema, a continuación, escriba lo siguiente:.

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

espero que ayude?

2

Acceso denegado porque no eres administrador.

Simplemente abra el símbolo del sistema cmd como administrador; eso funcionó para mí.

Cuestiones relacionadas