Не удается установить .apk на телефоне

Я только что сбил свое первое приложение, выпустил и подписал его и перевел на свой телефон, но не смог его установить на свой телефон - после прохождения экрана, говорящего "Вы хотите установить это приложение" и нажав "Установить", я просто получаю сообщение "Приложение не установлено" без каких-либо дополнительных объяснений. Я проверил подписку, используя jarsigner -verify.

Я загрузил .apk в http://ubuntuone.com/p/ESB/ и получил журнал с помощью приложения LogCollector на своем телефоне. Соответствующий экстракт воспроизводится ниже.

Log Collector version: 1.1.0
Device model: HTC Desire
Firmware version: 2.2
Kernel version: 2.6.32.15-gf9c0527
[email protected] )
#1 PREEMPT Fri Jul 23 17:26:53 CST 2010
Build number: FRF91

08-31 10:18:21.289 I/ActivityManager(   93): Starting activity: Intent { act=android.intent.action.VIEW dat=file:///sdcard/blanket.apk typ=application/vnd.android.package-archive cmp=com.android.packageinstaller/.PackageInstallerActivity }
08-31 10:18:21.359 I/PackageParser(20453): uk.co.oketchup.blanketsquare: compat added android.permission.WRITE_EXTERNAL_STORAGE android.permission.READ_PHONE_STATE
08-31 10:18:21.379 D/skia    (20453): --- decoder->decode returned false
08-31 10:18:21.669 I/ActivityManager(   93): Displayed activity com.android.packageinstaller/.PackageInstallerActivity: 331 ms (total 331 ms)
08-31 10:18:22.059 D/PowerManagerService(   93): New lightsensor value:640, lcdValue:192
08-31 10:18:22.390 D/SynchronizationService(20285): Checking preferences
08-31 10:18:22.769 I/ActivityManager(   93): Starting activity: Intent { dat=file:///sdcard/blanket.apk cmp=com.android.packageinstaller/.InstallAppProgress (has extras) }
08-31 10:18:22.849 D/skia    (20453): --- decoder->decode returned false
08-31 10:18:22.999 D/dalvikvm(20459): GC_EXPLICIT freed 419 objects / 23968 bytes in 74ms
08-31 10:18:23.089 D/PackageParser(   93): Scanning package: /data/app/vmdl73677.tmp
08-31 10:18:23.099 I/PackageParser(   93): uk.co.oketchup.blanketsquare: compat added android.permission.WRITE_EXTERNAL_STORAGE android.permission.READ_PHONE_STATE
08-31 10:18:23.129 I/ActivityManager(   93): Displayed activity com.android.packageinstaller/.InstallAppProgress: 320 ms (total 320 ms)
08-31 10:18:23.139 W/PackageParser(   93): Exception reading res/layout/main.xml in /data/app/vmdl73677.tmp
08-31 10:18:23.139 W/PackageParser(   93): java.io.IOException
08-31 10:18:23.139 W/PackageParser(   93): at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:207)
08-31 10:18:23.139 W/PackageParser(   93): at java.util.zip.ZipFile$ZipInflaterInputStream.read(ZipFile.java:432)
08-31 10:18:23.139 W/PackageParser(   93): at java.io.FilterInputStream.read(FilterInputStream.java:130)
08-31 10:18:23.139 W/PackageParser(   93): at org.apache.harmony.luni.util.InputStreamHelper.readFullyAndClose(InputStreamHelper.java:174)
08-31 10:18:23.139 W/PackageParser(   93): at java.util.jar.JarFile.getManifest(JarFile.java:307)
08-31 10:18:23.139 W/PackageParser(   93): at java.util.jar.JarFile.getInputStream(JarFile.java:385)
08-31 10:18:23.139 W/PackageParser(   93): at android.content.pm.PackageParser.loadCertificates(PackageParser.java:338)
08-31 10:18:23.139 W/PackageParser(   93): at android.content.pm.PackageParser.collectCertificates(PackageParser.java:509)
08-31 10:18:23.139 W/PackageParser(   93): at com.android.server.PackageManagerService.installPackageLI(PackageManagerService.java:5961)
08-31 10:18:23.139 W/PackageParser(   93): at com.android.server.PackageManagerService.access$2100(PackageManagerService.java:138)
08-31 10:18:23.139 W/PackageParser(   93): at com.android.server.PackageManagerService$5.run(PackageManagerService.java:4819)
08-31 10:18:23.139 W/PackageParser(   93): at android.os.Handler.handleCallback(Handler.java:587)
08-31 10:18:23.139 W/PackageParser(   93): at android.os.Handler.dispatchMessage(Handler.java:92)
08-31 10:18:23.139 W/PackageParser(   93): at android.os.Looper.loop(Looper.java:144)
08-31 10:18:23.139 W/PackageParser(   93): at android.os.HandlerThread.run(HandlerThread.java:60)
08-31 10:18:23.139 W/PackageParser(   93): Caused by: java.util.zip.DataFormatException: data error
08-31 10:18:23.139 W/PackageParser(   93): at java.util.zip.Inflater.inflateImpl(Native Method)
08-31 10:18:23.139 W/PackageParser(   93): at java.util.zip.Inflater.inflate(Inflater.java:255)
08-31 10:18:23.139 W/PackageParser(   93): at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:188)
08-31 10:18:23.139 W/PackageParser(   93): ... 14 more
08-31 10:18:23.149 E/PackageParser(   93): Package uk.co.oketchup.blanketsquare has no certificates at entry res/layout/main.xml; ignoring!
08-31 10:18:23.269 D/dalvikvm(   93): GC_EXPLICIT freed 5970 objects / 337960 bytes in 107ms
08-31 10:18:24.729 I/InstallAppProgress(20453): Finished installing uk.co.oketchup.blanketsquare

Большое спасибо за вашу помощь.


Редактировать 02/09/2010 Я снова изменил файл main.xml, удалив почти все пробелы. Он по-прежнему не устанавливает, но представляет собой не совсем ту же ошибку: он утверждает, что есть ошибка в zip файле, хотя я заметил, что сертификаты появляются дальше по списку. Если это не то, что я, очевидно, делаю неправильно, было бы лучше, если бы я поднял список рассылки разработчиков Android?

09-02 17:33:32.819 W/PackageParser(   93): Exception reading /data/app/vmdl73692.tmp
09-02 17:33:32.819 W/PackageParser(   93): java.io.IOException
09-02 17:33:32.819 W/PackageParser(   93): at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:207)
09-02 17:33:32.819 W/PackageParser(   93): at java.util.zip.ZipFile$ZipInflaterInputStream.read(ZipFile.java:432)
09-02 17:33:32.819 W/PackageParser(   93): at java.io.FilterInputStream.read(FilterInputStream.java:130)
09-02 17:33:32.819 W/PackageParser(   93): at org.apache.harmony.luni.util.InputStreamHelper.readFullyAndClose(InputStreamHelper.java:174)
09-02 17:33:32.819 W/PackageParser(   93): at java.util.jar.JarFile.readMetaEntries(JarFile.java:360)
09-02 17:33:32.819 W/PackageParser(   93): at java.util.jar.JarFile.<init>(JarFile.java:237)
09-02 17:33:32.819 W/PackageParser(   93): at java.util.jar.JarFile.<init>(JarFile.java:218)
09-02 17:33:32.819 W/PackageParser(   93): at android.content.pm.PackageParser.collectCertificates(PackageParser.java:471)
09-02 17:33:32.819 W/PackageParser(   93): at com.android.server.PackageManagerService.installPackageLI(PackageManagerService.java:5961)
09-02 17:33:32.819 W/PackageParser(   93): at com.android.server.PackageManagerService.access$2100(PackageManagerService.java:138)
09-02 17:33:32.819 W/PackageParser(   93): at com.android.server.PackageManagerService$5.run(PackageManagerService.java:4819)
09-02 17:33:32.819 W/PackageParser(   93): at android.os.Handler.handleCallback(Handler.java:587)
09-02 17:33:32.819 W/PackageParser(   93): at android.os.Handler.dispatchMessage(Handler.java:92)
09-02 17:33:32.819 W/PackageParser(   93): at android.os.Looper.loop(Looper.java:144)
09-02 17:33:32.819 W/PackageParser(   93): at android.os.HandlerThread.run(HandlerThread.java:60)
09-02 17:33:32.819 W/PackageParser(   93): Caused by: java.util.zip.DataFormatException: data error
09-02 17:33:32.819 W/PackageParser(   93): at java.util.zip.Inflater.inflateImpl(Native Method)
09-02 17:33:32.819 W/PackageParser(   93): at java.util.zip.Inflater.inflate(Inflater.java:255)
09-02 17:33:32.819 W/PackageParser(   93): at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:188)
09-02 17:33:32.819 W/PackageParser(   93): ... 14 more

Ответы

Ответ 1

Я видел поврежденные .apks, которые не будут загружаться на устройстве, со странными IOExceptions. Следуя этим шагам в Eclipse, кажется, чтобы предотвратить проблемы, которые я видел:

  • Убедитесь, что Project → Build Automatically отключен (то есть, не отмечен)
  • Проект → Очистить..., выберите "Очистить все проекты", убедитесь, что флажок "Начать сборку автоматически" не установлен, и нажмите "ОК".
  • Используйте File → Export → Android → Экспорт приложения Android для создания APK

Ответ 2

Причиной этого является то, что ваш apk не подписан.

Если вы используете eclipse, вам нужно будет подписать приложение при создании. Вы можете подписывать приложение, используя ваши ключи, если есть, или вы можете создать apk с ключами отладки, снабженными eclipse.

Процедура:

Rtclick в проекте > Инструменты Android > Экспорт подписанного пакета приложений" > укажите местоположение хранилища ключей (для отладки кэширования посмотрите домашний каталог вашего компьютера, пароль для отладочного ключа - android).

Ответ 3

При попытке подписать файл с именем main.xml

возникает какое-то исключение.

Исключение чтения res/layout/main.xml в /data/app/vmdl 73677.tmp

Попробуйте удалить или воссоздать этот файл, а затем скомпилировать/подписать и запустить приложение

http://www.google.com/support/forum/p/Android%20Market/thread?tid=11b65a3c2807848a&hl=en