У меня Nexus 7, и он только что был обновлен до Android 5.
Два приложения вызывают у меня проблемы после обновления системы, игры, в которые играют мои дети. Dumb Ways to Die и VVVVVV. У обоих из них были значки после обновления, но при нажатии появилось всплывающее окно с сообщением «Приложение не установлено». Я пытаюсь их установить. Загрузка в порядке. Установка начинается. А потом сообщение об ошибке:
Неизвестный код ошибки при установке приложения: "-505"
Точно такая же ошибка для обоих приложений. Я перезапускал устройство безрезультатно.
Я понятия не имею, что делать дальше. Пожалуйста, может кто-нибудь из добрых людей подскажет, как решить эту проблему.
Эта проблема возникает, когда приложение пытается повторно объявить существующее разрешение с сообщением об ошибке INSTALL_FAILED_DUPLICATE_PERMISSION
. В основном это затронуло приложения, основанные на Adobe AIR (префикс пакета с com.air
). Основная причина — другая реализация кода в Lollipop 5.0 при проверке подписи сертификата, используемой для подписи приложения. Для решения просто перейдите к части «Решение».
Обновление : Google исправил эту проблему в Lollipop 5.0.1.
Выдержки из системы отслеживания проблем Android L Developer Preview , на которые есть ссылка из записи в системе отслеживания проблем AOSP ,
Пост №4 :
logcat сообщает мне о конфликте с переобъявлением разрешений во время установки (в моем случае Amazon пытается переобъявить getui.permission.GetuiService, который уже принадлежит Camera 360)
10-25 08:06:37.805 749 824 W PackageManager: Package com.tencent.mm attempting to redeclare permission com.google.android.c2dm.permission.SEND already owned by com.google.android.gsf
10-25 08:06:37.926 4812 4812 D Finsky : [1] PackageInstallerImpl.cancelSession: Canceling session 121130466 for com.tencent.mm
10-25 08:06:37.926 4812 4812 E Finsky : [1] PackageInstallerImpl.handleCommitCallback: Error -505 while installing com.tencent.mm: INSTALL_FAILED_DUPLICATE_PERMISSION: Package com.tencent.mm attempting to redeclare permission com.google.android.c2dm.permission.SEND already owned by com.google.android.gsf
10-25 08:06:37.926 4812 4812 W Finsky : [1] 4.installFailed: Install failure of com.tencent.mm: -505 null
10-25 08:06:37.933 749 749 D ZenLog : intercepted: 0|com.android.vending|-973170826|null|10017,!priority
10-25 08:06:37.933 749 749 V NotificationService: pkg=com.android.vending canInterrupt=false intercept=true
10-25 08:06:37.964 4812 4812 D Finsky : [1] InstallerTask.cancelCleanup: Cancel running installation of com.tencent.mm
Выдержки из системы отслеживания ошибок AOSP ,
В API19 новый X509CertImpl(encCert) упаковывает сертификат (который уже проанализирован и готов к вычислению SHA1), тогда как в API 21 сертификат пересылается как поток байтов, снова анализируется и обрабатывается фабрикой сертификатов. Какая именно фабрика, зависит от контекста. В случае устройств L, на которых я тестировал, фабрика создаст сертификат OpenSSLX509Certificate. К сожалению, в нашем сертификате есть что-то, с чем у openssl возникают проблемы, и отпечаток меняется во время обработки openssl. Я могу воспроизвести это также с помощью инструмента openssl, когда я конвертирую наш сертификат в какой-либо другой формат (например, PEM).
Если бы SHA1 вычислялся непосредственно в 'encCert.getEncoded()', он был бы правильным в обоих случаях.
Обновление : по состоянию на 04.12.2014 Google исправил эту проблему в Lollipop 5.0.1. Для тех, кто не использовал обходной путь, пытаясь переустановить приложение, вы можете прошить образ Lollipop 5.0.1, когда он будет готов / дождаться OTA.
Похоже, это было исправлено в 5.0.1:
https://android.googlesource.com/platform/libcore/+/6632d8c9d8d1a3ac338d541676148677641bafe3
https://android.googlesource.com/platform/frameworks/base/+/32a22c44b8351c1cccd3a1f9c47a33469d9378e0
Статус: Выпущен
Восстановление приложений с поврежденными сертификатами.
В Lollipop было временное окно, когда мы сохраняли сертификаты после того, как они прошли цикл декодирования/кодирования. Хорошо написанная библиотека OpenSSL была либеральна при декодировании (позволяя анализировать слегка искаженные сертификаты), но затем была строгой при кодировании, давая нам разные байты для одного и того же сертификата.
Связанное изменение libcore (0c990ab4a90b8a5492a67b2b728ac9a4a1ccfa1b) теперь возвращает исходные байты дословно, исправляя как установки до Lollipop, так и установки после этого изменения.
Это изменение восстанавливает все приложения, которые были установлены в течение описанного выше периода времени, выполняя однократную проверку, чтобы убедиться, что сертификаты действительно равны.
Пожалуйста, обратитесь к более старой версии для других предлагаемых решений.
Роман Р.
Эндрю Т.
adb
, но не смог переустановить его. Обратите внимание, что приложение, которое я хочу установить, имеетair.com
префикс в качестве имени пакета. Похоже, это больше проблема между Google, Adobe Air и разработчиками приложений. Пока хотя бы один из них не исправит это, установить приложение будет невозможно. Я пометил проблему, чтобы получить обновление от Google.HasH_BrowN
Айк
Бен
Майк Ламберт