Application not installed - błąd instalacji pliku apk
styczeń 2012
projekt autorski
W EclipseIDE po wyeksportowaniu niepodpisanego (testy, debug) pliku apk i zapisaniu go na karcie pamięci nie byłem w stanie przeprowadzić procesu instalacji. Każda próba kończyła się komunikatem "Application not installed" - co samo w sobie niestety zbyt wiele nie mówi. Analizując logi systemu udało mi się wyłuskać informację o przybliżonej treści:
<...> ERROR/PackageParser(): Package <...> has no certificates at entry <nazwa_pliku_z_zasobów>; ignoring!
Posiadając tylko taką wiadomości już dużo łatwiej było znaleźć jakąkolwiek odpowiedź, która mogłaby pomóc w rozwiązaniu problemu. Okazało się, że istnieją trzy możliwe rozwiązania:
- zmiana nazwy pliku wywołującego błąd (w moim przypadku nie zadziałało),
- downgrade JDK i JRE do wersji 6u26 (taką wersję posiadałem, więc to też nie to),
- ręczne podpisanie pliku apk kluczem wersji debug za pomocą aplikacji jarsigner (zadziałało!).
Robi się to w sposób następujący:
jarsigner -verbose -keystore %USERPROFILE%\.android\debug.keystore <plik.apk> androiddebugkey
Po wywołaniu tego polecenia w konsoli pojawi się lista plików, które zostały podpisane. Instalacja tak zmodyfikowanego pliku APK w telefonie przebiega bez zakłóceń.
Dla usprawnienia pracy napisałem sam dla siebie krótki plik bat, za pomocą którego szybko podpisuję nowo wygenerowane pliki apk:
@echo off echo Signing Android apk file with debug key echo *************************************** echo Issue: http://code.google.com/p/android/issues/detail?id=830 echo. set /p java= JDK path: if [%java%]==[] set java= "C:\Program Files\Java\jdk1.6.0_24" set /p file= Full path to apk file: echo. echo Passphrase: android echo. cd %java%\bin jarsigner -verbose -keystore %USERPROFILE%\.android\debug.keystore %file% androiddebugkey echo. echo Visit http://mbialkowski.info for more. echo. pause
Opisana kwestia została wcześniej zgłoszona tutaj: http://code.google.com/p/android/issues/detail?id=830
