Мой тестер сказал, что он не может установить приложение из 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
Я думаю, что и я, и разработчик Mailchimp следуют одному и тому же учебнику, добавили такое же разрешение, и теперь оба наших приложения имеют дублирующее разрешение.
Итак, я удаляю это разрешение с моего AndroidManifest, и теперь я могу установить приложение на свой тестер. Я тестирую сообщение GCM, отправляя пакет на сервер GCM с моего php script, и приложение все еще получало сообщение GCM, как было.
Итак, будет ли другая проблема поднята из-за этого отсутствующего разрешения и в чем смысл этого разрешения? (поскольку без него мое приложение все еще получало сообщение GCM)
Я беспокоюсь, если наше приложение использует плагин/библиотеку, требующую разрешения. Мы не сможем установить наше приложение на Lollipop-устройстве, если есть другое установленное приложение, которое использует одну и ту же библиотеку, не так ли?
- ПРИМЕЧАНИЕ -
Я уже прочитал этот вопрос, мало кто предлагает то же самое, что и я, удалить разрешение. Но никто не говорит о том, что произойдет после того, как мы это сделаем, или почему мы должны добавить его.
INSTALL_FAILED_DUPLICATE_PERMISSION... C2D_MESSAGE
- ИЗМЕНИТЬ 1 -
Я вернулся к учебнику, руководство было правильным, это была неправильная реализация
I (и разработчик Mailchimp) должен добавить разрешение с именем нашего пакета приложений + ".permission.C2D_MESSAGE" вместо копирования и вставки com.example.gcm.permission.C2D_MESSAGE
<permission android:name="com.mycompany.myappname.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
Но, это поднимает мне еще один вопрос, учебник сказал, что если мы не добавим это разрешение или имя не будет соответствовать шаблону, приложение не получит сообщение. Но я получил сообщение, когда я тестирую даже когда я удаляю это pemission... странно.