安装失败,消息INSTALL_FAILED_DUPLICATE_PERMISSION ... C2D_MESSAGE可能性

时间:2017-01-26 16:12:16

标签: android android-permissions

如果你是通过谷歌搜索来找到这个错误的解决方案,下面的链接会给你一个答案,我的问题还有一些解释!)

可能重复

<子> INSTALL_FAILED_DUPLICATE_PERMISSION… C2D_MESSAGE <子> Error -505 INSTALL_FAILED_DUPLICATE_PERMISSION

等待!

enter image description here

我今天在一个实时项目中遇到了这个错误。用户遇到505错误无法安装该应用程序。然后我在IDE上运行它!

  
      
  • 如果您从Play商店下载带有此提及问题的应用,则在尝试安装时会出现505错误。
  •   
  • 如果您尝试使用IDE运行它,您将收到如上图所示的错误! (如果我错了,请纠正我)
  •   

然后我在找原因。

这是我的问题!

   <permission
        android:name="in.wptrafficanalyzer.locationroutedirectionmapv2.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />
    <uses-permission android:name="in.wptrafficanalyzer.locationroutedirectionmapv2.permission.MAPS_RECEIVE" />

令人惊讶的是,在特定用户手机上使用相同签名的另一个开发者的应用程序!该死的,那些复制贴今天相遇了!!

  

我想如果我尝试在两个应用程序中声明相同的权限   相同的包名称可能会发生此错误。(如果我错了,请纠正我)

以下是我的2个问题?

1.他们是否需要使用相同的权限?无论如何,他们会得到同样的东西。让app a用户pkg.name与权限permission.RECEIVE应用B使用相同的包与另一个权限CONFIGURE_SIP。这可以发生在他们见面时吗?(似乎是一个愚蠢的问题,但我想确认客户端手机中的其他应用程序也有同样的事情!)

2.有什么其他可能发生此错误的可能性?

  
      
  1. 应用程序使用签名级别安全性
  2. 定义自定义权限   
  3. 您尝试使用使用其他密钥签名的版本更新已安装的应用
  4.   
  5. 测试设备运行的是Android 21或更高版本,支持多个用户
  6.   

this post获得了1 2 3!他们是真的吗?如果是,对它们的任何好的解释都会很好或者出现这个错误的其他原因吗?

在上述帖子中有很多好的答案!不要问如何解决这个问题!但它是如何产生的!此外,如果我提到/明白了什么问题,请记下来!!

谢谢。

修改正如我所提到的,请注意该问题来自Play商店中已有的应用。而关于其他应用程序,我不知道!它存在于客户端的手机中。可能它也来自Play商店,因为即使开发者选项也未激活,直到我尝试在该手机上运行。他之前没有任何我公司的应用程序。他只是试着下载应用程序了505错误并开始解决。

而且我的第一个选择是删除该权限,它使应用程序安装成功(不是正确的事情,但确认问题在哪里)。这就是我需要知道这个错误的可能性的原因!

2 个答案:

答案 0 :(得分:0)

您的问题不是权限。拥有相同清单包名称的两个应用程序是不可能的。它必须是唯一的。因此系统认为用户尝试使用新签名证书重新安装/更新旧应用程序。来自android开发人员blog

  

如果签名证书发生更改,尝试将新应用程序安装到设备上将会失败,直到卸载旧版本为止。

修改

我使用权限运行一些测试。我认为,行为与应用程序包名称非常相似。仅在100%匹配时才会出现错误。结果: app A(package test.test)vs app B(package test.test2)

          package="test.test">

<permission
    android:name="test2.example.h"
    android:protectionLevel="signature" />

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="test.test2">
<permission
    android:name="test.example.hr"
    android:protectionLevel="signature" />
  1. 权限A - test.example.h vs B - test.example.h - DUPLICATE_PERMSSIONS错误
  2. test.example vs test.example.h - success
  3. test.example.g vs test.example.h - success
  4. uses-permission不会影响错误/安装。但我认为如果尝试使用其他权限,您可以在运行时获取SeciurityException。

答案 1 :(得分:0)

@commonsware博客已在Custom Permission Vulnerability and the 'L' Developer Preview中详细解释了它:

  

我可以说,“L”开发者预览版需要所有应用程序   使用SELECT SUBSTR(col, 1, INSTR(col, '-') - 1) AS first_part, SUBSTR(col, INSTR(col, '-') + 1) AS second_part FROM yourTable 元素为同一个android:name值进行签名   通过相同的签名密钥。实际的<permission>或其他值   在protectionLevel内并不重要。即使他们是相同的,一个   尝试定义<permission>的应用程序将无法安装   现有已安装的应用已定义<permission>。特别,   安装第二个应用程序将失败    INSTALL_FAILED_DUPLICATE_PERMISSION 错误。

来自@commonsware的回答:https://stackoverflow.com/a/11730133/4758255