Могу ли я удалить это разрешение? (Это вызывает INSTALL_FAILED_DUPLICATE_PERMISSION на устройстве Android 5.0)

Мой тестер сказал, что он не может установить приложение из Play Store на свой Nexus 5 (Lollipop). Он сказал, что получил эту ошибку

Unknown error code during application install "-505"

Я взял его телефон и попытался установить приложение через adb, я получил эту ошибку

Failure [INSTALL_FAILED_DUPLICATE_PERMISSION 
        perm=com.example.gcm.permission.C2D_MESSAGE 
        pkg=com.mailchimp.alterego]

После некоторого чтения я наткнулся на это письмо с @Commonsware

http://commonsware.com/blog/2014/08/04/custom-permission-vulnerability-l-developer-preview.html

Очевидно, что и мое приложение, и приложение Mailchimp (которое установлено на моем телефоне тестера) имеют дублированное разрешение, com.example.gcm.permission.C2D_MESSAGE. Затем я проверяю журнал git, чтобы узнать, когда я добавил эту строку в свой AndroidManifest, и обнаружил, что это было, когда я реализую GCM. Тогда я следил за этим учебным пособием

https://developer.android.com/google/gcm/client.html

enter image description here

Я думаю, что и я, и разработчик Mailchimp следуют одному и тому же учебнику, добавили такое же разрешение, и теперь оба наших приложения имеют дублирующее разрешение.

Итак, я удаляю это разрешение с моего AndroidManifest, и теперь я могу установить приложение на свой тестер. Я тестирую сообщение GCM, отправляя пакет на сервер GCM с моего php script, и приложение все еще получало сообщение GCM, как было.

Итак, будет ли другая проблема поднята из-за этого отсутствующего разрешения и в чем смысл этого разрешения? (поскольку без него мое приложение все еще получало сообщение GCM)

Я беспокоюсь, если наше приложение использует плагин/библиотеку, требующую разрешения. Мы не сможем установить наше приложение на Lollipop-устройстве, если есть другое установленное приложение, которое использует одну и ту же библиотеку, не так ли?

- ПРИМЕЧАНИЕ -

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

INSTALL_FAILED_DUPLICATE_PERMISSION... C2D_MESSAGE

- ИЗМЕНИТЬ 1 -

Я вернулся к учебнику, руководство было правильным, это была неправильная реализация

enter image description here

I (и разработчик Mailchimp) должен добавить разрешение с именем нашего пакета приложений + ".permission.C2D_MESSAGE" вместо копирования и вставки com.example.gcm.permission.C2D_MESSAGE

<permission android:name="com.mycompany.myappname.permission.C2D_MESSAGE" 
            android:protectionLevel="signature" />

Но, это поднимает мне еще один вопрос, учебник сказал, что если мы не добавим это разрешение или имя не будет соответствовать шаблону, приложение не получит сообщение. Но я получил сообщение, когда я тестирую даже когда я удаляю это pemission... странно.

Ответ 1

Как описано в INSTALL_FAILED_DUPLICATE_PERMISSION... C2D_MESSAGE, вы должны использовать ${applicationId} вместо статического идентификатора приложения в AndroidManifest.

Пример:

<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/>

Он исправит вашу проблему, и если вы начнете использовать Flavor, все будет работать отлично.;)

Ответ 2

Измените имя своего пакета на другое имя пакета, а не удалите его.

package="com.example.gcm" 

to

package="com.appname"  //use any name here like your app name or company name

Ответ 3

Android 5.0. У вас есть многопользовательский режим, поэтому вы должны удалить всех пользователей Следующие шаги:

После удаления приложения. Вы можете найти имя своего приложения в списке загруженных приложений.

Перейдите в Настройки- > Приложения. Внизу списка вы нашли YourApp с тегом "NOT INSTALLED" → Open → Нажмите "Меню опций" и выберите "Удалить для всех пользователей".

После этого процесса вы успешно установите новое приложение и хорошо работаете.