2012-01-10 9 views
7

sono in grado di installare un build di debug su emulatore fare:Android: impossibile installare release build sull'emulatore; ottenendo mancata [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION]

ant debug install 

ma sono in grado di installare una build di rilascio. I miei passi:

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 

Tutte le fasi di eseguire correttamente tranne l'ultimo in cui ricevo un messaggio:

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

Ho anche provato a fare ant installr invece di adb install bin\myapp-release.apk con lo stesso risultato

EDIT: Penso che questo abbia a che fare con la chiave, poiché questa è l'unica differenza che posso vedere tra le versioni di debug e di rilascio. Ho generato la chiave utilizzando:

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

come indicato in http://developer.android.com/guide/publishing/app-signing.html. Ho modificato il file ant.properties per http://developer.android.com/guide/developing/building/building-cmdline.html e ora eseguo semplicemente ant release install (anziché i passaggi precedenti) ma sto ancora riscontrando lo stesso problema. Se qualcuno sa come fa la form a generare la chiave di debug, allora potrei seguire la stessa procedura per generare la mia chiave di release e vedere se questo risolve il problema.

+0

hai disinstallato la tua app di debug build? – nandeesh

+0

sì ho disinstallato debug build – morpheus

+0

basta installare l'apk non firmato. –

risposta

5

Soluzione: https://stackoverflow.com/a/8225017/147530
Note:
1. Ero un INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION. Non ho avuto un INSTALL_PARSE_FAILED_NO_CERTIFICATES
2. Esecuzione adb logcat dalla linea di cmd ha mostrato stacktrace simile a quello in 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) 

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

11

Ho avuto questo stesso problema perché ero utilizzando una stringa valore nel mio file AndroidManifest.xml come questo:

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

Dove stringa s.xml conteneva:

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

versionCode dovrebbe essere un numero intero. Una volta che ho preso che @string riferimento non ho più avuto questo errore e l'applicazione compilata e corse più che bene:

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

grazie, ha funzionato – xnagyg

+0

è possibile memorizzare 'versionCode' come numero intero:' 3 'e si riferiscono come' @ integer/version_code' –

1

ho avuto lo stesso errore, ma quando ho guardato in logcat durante il tentativo di installare il file apk al telefono, ho visto queste righe:

11-10 11: 28: 26,971 20075 20085 D: ZIP: EOCD non trovato, /data/local/tmp/myapp.apk è non zip

11-10 11: 28: 26,972 20075 20085 W zipro: Errore durante l'apertura dell'archivio /data/local/tmp/myapp.apk: file non valido

11-10 novembre: 28: 26,972 20075 20085 D risorsa: è riuscito ad aprire archivio Zip '/ data/local/tmp/myapp.apk'

11-10 11: 28: 26,972 20075 20085 W DefContainer: Impossibile analizzare confezionare a /data/local/tmp/myapp.apk: android.content.pm.PackageParser $ PackageParserException: impossibile parse /data/local/tmp/myapp.apk

Come accennato in another question, si è rivelato il file apk è stato danneggiato (probabilmente non scaricare correttamente), così ho dovuto scaricarlo di nuovo, poi ha funzionato bene.

Problemi correlati