为了账号安全,请及时绑定邮箱和手机立即绑定

INSTALL_FAILED_DUPLICATE_PERMISSION…C2D_MESSAGE

/ 猿问

INSTALL_FAILED_DUPLICATE_PERMISSION…C2D_MESSAGE

一只萌萌小番薯 2019-12-13 10:11:01

我在应用中使用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但我已经复制从原来的谷歌GCM指南,代码,因此它必须是罚款。


查看完整描述

3 回答

?
慕侠2389804

我找到了适合我的解决方案。

在“我的设备”(Nexus 7)中为Android 5.0。棒棒糖我按照这些步骤。

卸载应用程序后,您会App NameDownloaded选项卡的“ 应用程序列表”下找到。

  • 前往设置

  • 应用

  • 在列表的底部,您会发现YourApp带有“未安装”标签

  • 打开

  • 单击OptionMenu并选择“为所有用户卸载”

完成该过程后,我成功安装了新应用,并且运行良好。


查看完整回答
反对 回复 2019-12-13
?
郎朗坤

去掉


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

<permission

    android:name="${applicationId}.permission.C2D_MESSAGE"

    android:protectionLevel="signature"/>

运行应用程序...然后再次添加许可并运行应用程序。


准备!。


查看完整回答
反对 回复 2019-12-13
?
料青山看我应如是

我在Android-21上具有自定义签名权限时遇到了同样的问题,并通过确保执行完整的卸载操作解决了该问题。


在以下情况下会发生这种极端情况:


应用程序使用签名级别的安全性定义自定义权限

您尝试使用使用其他密钥签名的版本更新已安装的应用程序

测试设备运行的是Android 21或更高版本,并且支持多个用户

命令行示例

这是一个命令行记录,演示了该问题及其解决方法。此时,已安装调试版本,并且我正在尝试安装使用发布密钥签名的生产版本:


# This fails because the debug version defines the custom permission signed with a different key:


[root@localhost svn-android-apps]# . androidbuildscripts/my-adb-install Example release

920 KB/s (2211982 bytes in 2.347s)

        pkg: /data/local/tmp/Example-release.apk

Failure [INSTALL_FAILED_DUPLICATE_PERMISSION perm=com.example.android.example.PERMISSION_EXAMPLE_PLUGIN pkg=com.example.android.example]


# I use uninstall -k because apparently that is similar to uninstalling as a user

# by dragging the app out of the app tray:


[root@localhost svn-android-apps]# /android-sdk-linux/platform-tools/adb uninstall -k com.example.android.example

The -k option uninstalls the application while retaining the data/cache.

At the moment, there is no way to remove the remaining data.

You will have to reinstall the application with the same signature, and fully uninstall it.

If you truly wish to continue, execute 'adb shell pm uninstall -k com.example.android.example'


# Let's go ahead and do that:


[root@localhost svn-android-apps]# /android-sdk-linux/platform-tools/adb shell pm uninstall -k com.example.android.example

Success


# This fails again because the custom permission apparently is part of the data/cache

# that was not uninstalled:


[root@localhost svn-android-apps]# . androidbuildscripts/my-adb-install Example release

912 KB/s (2211982 bytes in 2.367s)

        pkg: /data/local/tmp/Example-release.apk

Failure [INSTALL_FAILED_DUPLICATE_PERMISSION perm=com.example.android.example.PERMISSION_EXAMPLE_PLUGIN pkg=com.example.android.example]


# In spite of the warning above, simply doing a full uninstall at this point turned out to 

# work (for me):


[root@localhost svn-android-apps]# /android-sdk-linux/platform-tools/adb uninstall com.example.android.example

Success


# Release version now successfully installs:


[root@localhost svn-android-apps]# . androidbuildscripts/my-adb-install Example release

898 KB/s (2211982 bytes in 2.405s)

        pkg: /data/local/tmp/Example-release.apk

Success


[root@localhost svn-android-apps]# 

Eclipse示例

相反(在已安装发行版时尝试从Eclipse安装调试版),我得到以下对话框:


Eclipse重新安装对话框


如果您在此时回答是,则安装将成功。


设备示例

如另一个答案所指出的,您也可以转到设备设置中的应用程序信息页面,单击溢出菜单,然后选择“为所有用户卸载”,以防止出现此错误。


查看完整回答
反对 回复 2019-12-13

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信