Я использую уведомления Google в своем приложении, и до сих пор я делал ниже в манифесте:
<!-- GCM -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!-- This app has permission to register and receive data message. -->
<!-- Creates a custom permission so only this app can receive its messages. NOTE: APP_PACKAGE.permission.C2D_MESSAGE -->
<permission android:name="com.myapp.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.myapp.permission.C2D_MESSAGE" />
<!-- END GCM -->
Он работал отлично, пока я не обновил свой Nexus 7 до Android 5.0.
Теперь, когда я пытаюсь установить приложение на этом устройстве с Eclipse, я получаю эту ошибку:
INSTALL_FAILED_DUPLICATE_PERMISSION perm = com.myapp.permission.C2D_MESSAGE pkg = com.myapp
Я не понимаю, что не так? Он работал отлично до Android 5.0.
Я знаю , что я использую C2D_MESSAGE
в две строки, permission
и , uses-permission
но я скопировал этот код из оригинального руководства Google GCM, поэтому он должен быть хорошо.
android
google-cloud-messaging
android-notifications
android-5.0-lollipop
Исключение нулевого указателя
источник
источник
Ответы:
Я нашел решение, которое работает для меня.
В моем устройстве (Nexus 7) Android 5.0. Леденец Я следую за этими шагами.
После удаления приложения вы найдете
App Name
список приложений наDownloaded
вкладке.YourApp
тег «НЕ УСТАНОВЛЕНО»OptionMenu
и выберите «Удалить для всех пользователей»После этих шагов я успешно установил новое приложение, и оно работает хорошо.
источник
удалять
Запустите приложение ... Затем снова добавьте разрешение и запустите приложение.
Готов!.
источник
${applicationId}
вместоУ меня была та же проблема с пользовательским разрешением подписи на Android-21, и я решил ее, убедившись, что выполняю полное удаление.
Это крайний случай, который возникает, когда:
Пример командной строки
Вот транскрипт командной строки, который демонстрирует проблему и как ее решить. На этом этапе установлена отладочная версия, и я пытаюсь установить рабочую версию, подписанную ключом выпуска:
Пример Eclipse
Идя в обратном направлении (пытаясь установить отладочную сборку из Eclipse, когда сборка выпуска уже установлена), я получаю следующий диалог:
Если вы просто ответите «да», установка будет успешной.
Пример устройства
Как указано в другом ответе, вы также можете перейти на страницу информации о приложении в настройках устройства, щелкнуть меню переполнения и выбрать «Удалить для всех пользователей», чтобы предотвратить эту ошибку.
источник
Я решил это, не прибегая к удалению альтернативного apk в первую очередь (что за боль, верно?). Чтобы успешно установить как отладочную, так и выпускную версию apk, просто используйте встроенный $ {applicationId} заполнитель gradle в AndroidManifest.xml, чтобы изменить значения разрешений android: name во время компиляции.
Фрагмент файла build.gradle:
Фрагмент файла AndroidStudio.xml:
Вы можете проверить измененный файл AndroidManifest.xml в apk, используя,
aapt l -a app-debug.apk
чтобы убедиться, что заполнитель был применен правильно. Если вы используете различные вкусы продукта, я уверен, что вы можете применить вариант этого метода в соответствии с вашими потребностями.источник
applicationId
в двух разныхproductFlavors
, и использовать${applicationId}
эффект будет одинаково.Удалите все жестко запрограммированные ссылки на имя вашего пакета из файла манифеста.
(Это лучшая практика, даже если вы не используете
productFlavors
)Например, если ваш манифест содержит:
Изменил это на:
Затем в файле модуля вашего модуля установите соответствующий
applicationId
:Вы можете следовать этому руководству для получения дополнительной информации
источник
${applicationId}
исправил проблему для меня!попробуйте удалить приложение с помощью ADB:
источник
Failure [DELETE_FAILED_INTERNAL_ERROR]
. В чем может быть причина?При выдаче этой ошибки будет четко указано имя пакета приложения, из-за которого в разрешении было отказано. И просто удаление приложения не решит проблему. Для решения проблемы нам необходимо сделать следующий шаг:
Проблема решена: D
источник
Устанавливая приложение в OS 5.0, я получаю это сообщение:
Дублированных пакетов нет, и мы можем решить эту проблему, удалив вручную старое приложение или используя adb:
adb uninstall com.yourpackage
источник
Ничто из вышеперечисленного не помогло мне. Мое приложение работало нормально в прошлом, чем Lollipop. Но когда я тестировал его на Lollipop, появилась ошибка выше. Он отказался установить. У меня не было никаких предыдущих версий, поэтому все вышеперечисленные решения в моем случае недействительны. Но благодаря этому SO-решению теперь оно работает нормально. Как и большинство разработчиков, я следовал вводящему в заблуждение уроку Google и добавил разрешения копированием и вставкой следующим образом:
Это будет работать с более старыми версиями <Lollipop. Так что теперь я изменился на:
источник
CommonsWare прав, но, на мой взгляд, это (ошибка) плохой способ сказать: «Установленный на устройстве apk подписан другим сертификатом, а не новым, который вы пытаетесь установить» .
Вероятно, это новая ошибка, поскольку в прошлом она спрашивала, следует ли удалять приложение с устройства из-за неправильного сертификата.
Решение, столь же болезненное, как это может быть, состоит в том, чтобы удалить приложение это вручную.
Кроме того, что мы сделали для групповой разработки, мы добавили хранилище ключей отладки в наш репозиторий и указали на gradle, чтобы использовать его следующим образом:
И теперь при передаче устройств между членами команды мы все используем один и тот же сертификат отладки, поэтому проблем не возникает. :)
источник
В Android 5 проверьте свои настройки -> приложения. Вместо удаления только для активного пользователя (так как в Android 5 может быть несколько пользователей, а в моем телефоне - гостевой пользователь), нажмите на кнопку аксессуаров в верхнем правом углу панели действий / инструментов и выберите «Удалить для всех пользователей». Похоже, что в Android 5 при удалении из панели запуска вы удаляете приложение только для активного пользователя.
Приложение все еще находится на устройстве. Это меня поразило, так как я пытался установить релизную версию, не работало, поэтому я подумал, что правильно, потому что у меня все еще установлена отладочная версия, удалил приложение. Но потом все равно не удалось установить. Первой подсказкой была запись в списке приложений удаленного приложения, рядом с которым было сообщение о том, что оно было удалено (изображение).
источник
Смотрите эту ссылку там сказано, что она будет работать, когда они подписаны одним и тем же ключом. Ключ релиза и ключ отладки не совпадают.
Так сделай это:
источник
заменить ниже строки:
источник
В моем случае было установлено несколько приложений, имеющих одно и то же доменное имя в имени пакета, как показано ниже.
Мне пришлось удалить все приложения с похожими именами пакетов и переустановить их снова, чтобы избавиться от проблемы.
Чтобы найти все имена пакетов с устройства, я использовал следующее.
Затем я взял пакеты, соответствующие названию пакета, которое я ищу.
Затем удалили все приложения, имеющие этот домен.
Вы также можете удалить приложения с помощью
Settings
приложения. Перейти кSettings -> Apps -> Find the app -> Uninstall
Надеюсь, что это помогает кому-то, имеющему ту же проблему, что и я.
источник
Ранее говорилось, что на устройстве найдено приложение с другой подписью. При установке из IDE также будет спрашивать, хотите ли вы удалить его?
Но я думаю, что с Android 5.0 они изменили причину удаления. Это не происходит, если вы устанавливаете приложение с той же подписью
источник
Я столкнулся с той же проблемой с Nexus 5 Android Lollipop 5.0.1:
И в моем случае я не мог решить эту проблему
uninstalling
с приложением, потому что оно былоandroid app
, но мне пришлось изменитьcustom permissions
имя приложения вmanifest
потому что оно было таким же, как приложение для Android, которое я не мог удалить или внести какие-либо изменения.Надеюсь, это кому-нибудь поможет!
источник
В моем случае я получил следующую ошибку
Когда я пытался установить приложение с именем пакета
com.abc.Secondapp
. Здесь дело в том, что приложение с именем пакетаcom.abc.Firstapp
уже было установлено в моем приложении.Я решил эту ошибку, удалив приложение с именем пакета,
com.abc.Firstapp
а затем установив приложение с именем пакетаcom.abc.Secondapp
Я надеюсь, что это поможет кому-то во время тестирования.
источник
В своем файле AndroidManifest.xml измените специально объявленные имена разрешений, например:
к этому,
com.myapprocks эта часть решает конфликт с другим вашим приложением.
источник
В моем случае я использовал стороннюю библиотеку (т.е. поставщика), и библиотека поставляется с примером приложения, которое я уже установил на свое устройство. Так что этот пример приложения теперь конфликтовал каждый раз, когда я пытаюсь установить свое собственное приложение, реализующее библиотеку. Так что я просто удалил пример приложения поставщика, и он работает потом.
источник
Я удалил предыдущую версию. Это сработало для меня.
источник
Я перезапустил телефон после удаления приложения, и оно заработало
источник
Если у вас другой вид приложения, попробуйте сначала удалить его. Это помогло мне, когда у меня была такая же проблема.
источник