我可以删除此权限吗?(它导致Android 5.0设备中的INSTALL_FAILED_DUPLICATE_PERMISSION)

Tar*_*w45 2 android google-cloud-messaging android-permissions android-5.0-lollipop

我的测试人员表示他无法将Play应用程序中的应用安装到他的Nexus 5(Lollipop).他说他得到了这个错误

Unknown error code during application install “-505”
Run Code Online (Sandbox Code Playgroud)

我拿起手机试着通过adb安装应用程序,我收到了这个错误

Failure [INSTALL_FAILED_DUPLICATE_PERMISSION 
        perm=com.example.gcm.permission.C2D_MESSAGE 
        pkg=com.mailchimp.alterego]
Run Code Online (Sandbox Code Playgroud)

经过一番阅读,我从@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中删除了该权限,现在我可以在我的测试人员的手机上安装我的应用程序了.我通过从我的PHP脚本发送到包到GCM服务器的测试GCM消息,应用程序仍然得到GCM消息.

那么,是否会因为缺少许可而提出其他问题,无论如何获得该许可的重点是什么?(因为没有它,我的应用程序仍然收到GCM消息)

我担心的是,如果我们的应用程序使用的是需要权限的插件/库.如果有另一个安装的应用程序使用相同的库,我们将无法在Lollipop设备上安装我们的应用程序,不是吗?

- 注意 -

我已经读过这个问题了,很少有人对我所做的事情提出同样的建议,取消许可.但没有人谈论我们做之后会发生什么,或者为什么我们必须添加它.

INSTALL_FAILED_DUPLICATE_PERMISSION ... C2D_MESSAGE

- 编辑1 -

我回到教程,教程是对的,这是我错误的实现

在此输入图像描述

我(和Mailchimp开发人员)应该使用我们的应用程序包+ .permission.C2D_MESSAGE的名称添加权限,而不是仅复制并粘贴com.example.gcm.permission.C2D_MESSAGE

<permission android:name="com.mycompany.myappname.permission.C2D_MESSAGE" 
            android:protectionLevel="signature" />
Run Code Online (Sandbox Code Playgroud)

但是,这给我提出了另一个问题,教程说,如果我们不添加此权限或名称与模式不匹配,应用程序将无法获取消息.但是当我测试时,即使我删除时,我收到了消息这个漏洞......很奇怪.

Jan*_*iel 7

INSTALL_FAILED_DUPLICATE_PERMISSION ... C2D_MESSAGE中所述,您应该${applicationId}在AndroidManifest中使用静态应用程序ID.

例:

<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/>
Run Code Online (Sandbox Code Playgroud)

它将解决您的问题,如果您开始使用Flavor,一切都将完美.;)