2012-01-10 16 views
7

soy capaz de instalar una depuración construir en emulador haciendo:Android: no se puede instalar la versión de lanzamiento en el emulador; El no conseguir [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION]

ant debug install 

pero no puedo instalar una versión de lanzamiento. Mis pasos:

1. ant release 
2. jarsigner -verbose -keystore ..\my-release-key.keystore bin\myapp-release-unsigned.apk mykey 
3. ren bin\myapp-release-unsigned.apk bin\myapp-release-signed.apk 
4. zipalign -v 4 myapp-release-signed.apk myapp-release.apk 
5. adb install bin\myapp-release.apk 

Todos los pasos se ejecutan correctamente, excepto la última, donde aparece un mensaje:

82 KB/s (388012 bytes in 4.613s) 
     pkg: /data/local/tmp/myapp-release.apk 
Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION] 

También he intentado hacer ant installr en lugar de adb install bin\myapp-release.apk con el mismo resultado

EDITAR: Creo que esto tiene que ver con la clave, ya que esa es la única diferencia que puedo ver entre las compilaciones de lanzamiento y depuración. Genere la llave usando:

keytool -genkey -v -keystore my-release-key.keystore 
-alias alias_name -keyalg RSA -keysize 2048 -validity 10000 

según lo mencionado en http://developer.android.com/guide/publishing/app-signing.html. Modifiqué el archivo ant.properties por http://developer.android.com/guide/developing/building/building-cmdline.html y ahora solo estoy haciendo ant release install (en lugar de los pasos anteriores) pero sigo teniendo el mismo problema. Si alguien sabe cómo genera la clave de depuración ANT, podría seguir el mismo procedimiento para generar mi clave de liberación y ver si eso resuelve el problema.

+0

¿ha desinstalado su aplicación de compilación de depuración? – nandeesh

+0

sí, he desinstalado la compilación de depuración – morpheus

+0

solo instale la apk sin firmar. –

Respuesta

5

Solución: https://stackoverflow.com/a/8225017/147530
Notas: 1.
que era conseguir una INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION. Yo no conseguir un INSTALL_PARSE_FAILED_NO_CERTIFICATES
2. Ejecución de adb logcat de la línea cmd mostró StackTrace similar a la de Android signing with Ant:

W/PackageParser( 51): Exception reading /data/app/vmdl24231.tmp 
W/PackageParser( 51): java.lang.SecurityException: META-INF/METALLIC.SF has in 
valid digest for assets/myasset.xtx in /data/app/vmdl24231.tmp 
W/PackageParser( 51):   at java.util.jar.JarVerifier.verifyCertificate(J 
arVerifier.java:370) 
W/PackageParser( 51):   at java.util.jar.JarVerifier.readCertificates(Ja 
rVerifier.java:273) 
W/PackageParser( 51):   at java.util.jar.JarFile.getInputStream(JarFile. 
java:416) 
W/PackageParser( 51):   at android.content.pm.PackageParser.loadCertific 
ates(PackageParser.java:317) 
W/PackageParser( 51):   at android.content.pm.PackageParser.collectCerti 
ficates(PackageParser.java:479) 
W/PackageParser( 51):   at com.android.server.PackageManagerService.inst 
allPackageLI(PackageManagerService.java:4287) 
W/PackageParser( 51):   at com.android.server.PackageManagerService.acce 
ss$1600(PackageManagerService.java:109) 
W/PackageParser( 51):   at com.android.server.PackageManagerService$5.ru 
n(PackageManagerService.java:3779) 
W/PackageParser( 51):   at android.os.Handler.handleCallback(Handler.jav 
a:587) 
W/PackageParser( 51):   at android.os.Handler.dispatchMessage(Handler.ja 
va:92) 
W/PackageParser( 51):   at android.os.Looper.loop(Looper.java:123) 
W/PackageParser( 51):   at android.os.HandlerThread.run(HandlerThread.ja 
va:60) 

Referencias:
http://code.google.com/p/android/issues/detail?id=19567

11

Tuve este mismo problema porque yo estaba usando una cuerda valor en mi archivo AndroidManifest.xml como este:

android:versionCode="@string/version_code" 
android:versionName="@string/version_name" 

Where string s.xml contenía:

<string name="version_code">3</string> 
<string name="version_name">1.0</string> 

versionCode debe ser un entero. Una vez que tomé que @string referencia ya no tiene este error y la aplicación compilada y corrió muy bien:

android:versionCode="3" 
android:versionName="1.0" 
+0

gracias, funcionó – xnagyg

+0

Puede almacenar 'versionCode' como entero:' 3 'y se refiere como' @ integer/version_code' –

1

que tenían el mismo error, pero cuando miré en Logcat al tratar de instalar el archivo APK a la teléfono, he visto estas líneas:

11-10 11: 28: 26.971 20.075 20.085 D: Código postal: EOCD no encontrado, /data/local/tmp/myapp.apk es no zip

11-10 11: 28: 26.972 20075 20085 W zipro: Error al abrir el archivo /data/local/tmp/myapp.apk: 28:: 26.972 20.075 20.085 D activo:

11-10 11 archivo no válido no pudo abrir archivo Zip '/ data/local/tmp/miaplicacion.apk'

11-10 11: 28: 26.972 20.075 20.085 W DefContainer error al analizar el paquete en /data/local/tmp/myapp.apk: android.content.pm.PackageParser $ PackageParserException: No se pudo analizar /data/local/tmp/myapp.apk

Como se mencionó en another question, resultó fue dañado el archivo apk (probablemente no se descarga correctamente), así que tuve que descargarlo de nuevo, entonces se trabajó multa.

Cuestiones relacionadas