2010-11-22 10 views

Respuesta

44

Si tiene su clave de plataforma/par de certificado (.pk8 + x509.pem). Que se puede encontrar en build/target/product/security en el sdk pulbic.

Puede utilizar el SignApk.jar desde la línea de comandos

java-jar SignApk.jar platform.x509.pem platform.pk8 Application.apk Application_signed.apk

O para facilitar la automatización, puede importar el par clave/cert en su archivo java keystore, con el keytool-importkeypair, y usar un makefile o eclipse para firmar.

herramienta de claves-importkeypair -k ~/.android/debug.keystore -p androide -pk8 platform.pk8 -cert platform.x509.pem -alias plataforma

15

El signapk.jar (todo en minúsculas) archivo mencionado en aprock' answer se puede encontrar en prebuilts/sdk/tools/lib/signapk.jar (o out/host/linux-x86/framework/signapk.jar).

A continuación describiré cómo administrar el almacén de claves utilizado por Eclipse y ant release.


El siguiente comando toma el archivo de clave platform.pk8 y el certificado X509 platform.x509.pem y emite la clave de descifrado en el material tmp.p12. El nombre platformkey se utiliza para

 
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 | \ 
    openssl pkcs12 -export -in platform.x509.pem -inkey /dev/stdin \ 
    -name platformkey -password pass: -out tmp.p12 

Eclipse y ant debug utilizar el almacén de claves en ~/.android/debug.keystore que está bloqueado con la contraseña android. (También puede especificar otro archivo de almacén de claves, por ejemplo, ~/.android/mykeys.keystore). El siguiente comando almacena el material clave de tmp.p12 en el almacén de claves (sin una contraseña para las claves, si lo desea, edite -srcstorepass '' debajo)):

 
keytool -importkeystore -deststorepass android -srckeystore tmp.p12 \ 
    -srcstoretype PKCS12 -srcstorepass '' -destkeystore ~/.android/debug.keystore 

En este punto, se puede eliminar el archivo tmp.p12 porque ya no es necesario.

Con el fin de comprobar lo que está en el almacén de claves, puede ejecutar el siguiente keytool comando (la salida se muestra en la línea a partir de entonces):

 
$ keytool -list -keystore ~/.android/debug.keystore -storepass android 
... 
platformkey, Nov 23, 2013, PrivateKeyEntry, 
Certificate fingerprint (SHA1): 12:34:56:(stripped):AB:CD:EF 

Cuando ya no se necesita la llave, puede ser eliminado con:

 
keytool -delete -keystore ~/.android/debug.keystore -storepass android -alias platformkey 

En el archivo local.properties, poner (si se omite el key.*.password opciones, usted tiene que introducirla cada vez que se firma el APK):

key.store=${user.home}/.android/debug.keystore 
key.alias=platformkey 
key.store.password=android 
key.alias.password= 

Ahora puede ejecutar ant release para firmar su APK usando la clave de plataforma que almacenó en un almacén de claves.

Cuestiones relacionadas