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)
但是,这给我提出了另一个问题,教程说,如果我们不添加此权限或名称与模式不匹配,应用程序将无法获取消息.但是当我测试时,即使我删除时,我收到了消息这个漏洞......很奇怪.
如INSTALL_FAILED_DUPLICATE_PERMISSION ... C2D_MESSAGE中所述,您应该${applicationId}在AndroidManifest中使用静态应用程序ID.
例:
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/>
Run Code Online (Sandbox Code Playgroud)
它将解决您的问题,如果您开始使用Flavor,一切都将完美.;)
| 归档时间: |
|
| 查看次数: |
12390 次 |
| 最近记录: |