【问题标题】:Installation failed with message INSTALL_FAILED_DUPLICATE_PERMISSION… C2D_MESSAGE possibilities安装失败并显示消息 INSTALL_FAILED_DUPLICATE_PERMISSION… C2D_MESSAGE 可能性
【发布时间】:2017-01-26 16:12:16
【问题描述】:

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

可能重复

INSTALL_FAILED_DUPLICATE_PERMISSION… C2D_MESSAGEError -505 INSTALL_FAILED_DUPLICATE_PERMISSION

等等!

我今天在一个实时项目中遇到了这个错误。用户遇到 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.他们是否需要相同的权限?无论如何,当它相同时,他们会得到这个东西。假设应用程序 A 用户使用具有权限 permission.RECEIVE 的 pkg.name 应用程序 B 使用具有另一个权限 CONFIGURE_SIP 的相同包。当他们相遇时会发生这种情况吗?(似乎是一个愚蠢的问题,但我想确认另一个应用程序有没有在客户的手机里有同样的东西!)

2.还有哪些/是否还有其他可能发生此错误的可能性?

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

this post 得到那些 1 2 3 !他们是真的吗?如果是的话,任何关于它们的好的解释都会很好,或者这个错误的任何其他原因?

在提到的帖子中有很多很好的答案!不问如何解决这个问题!但是它是如何生成的!另外,如果我提到/理解了错误,请记下!

谢谢。


编辑正如我所提到的,请注意问题来自一个已经在 Play 商店中的应用程序。关于另一个应用程序,我不知道!它在客户的手机中。可能它也来自 Play 商店,因为在我尝试在该手机上运行之前甚至没有激活开发人员选项。他也没有我公司以前的任何应用程序。他只是试图下载应用程序505错误并来修复它。

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

【问题讨论】:

    标签: android android-permissions


    【解决方案1】:

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

    据我所知,“L”开发者预览版要求所有应用 使用 &lt;permission&gt; 元素对相同的 android:name 值进行签名 通过相同的签名密钥。实际的protectionLevel 或其他值 &lt;permission&gt; 里面没关系。即使它们相同,一个 尝试定义 &lt;permission&gt; 的应用程序将无法安装,如果 现有安装的应用程序已经定义了&lt;permission&gt;。具体来说, 第二个应用程序的安装将失败并显示 INSTALL_FAILED_DUPLICATE_PERMISSION 错误。

    这是来自@commonsware 的答案:https://stackoverflow.com/a/11730133/4758255

    【讨论】:

    【解决方案2】:

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

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

    编辑:

    我运行一些具有权限的测试。我认为,行为与应用程序包名称非常相似。仅当 100% 匹配时才会发生错误。结果: 应用 A(包 test.test)与应用 B(包 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 与 B - test.example.h - DUPLICATE_PERMSSIONS 错误
    2. test.example 与 test.example.h - 成功
    3. test.example.g 与 test.example.h - 成功

    uses-permission 不会影响错误/安装。但我认为如果尝试使用其他权限,您可以在运行时获得 SeciurityException。

    【讨论】:

    • 清单包名称不一样。在这种情况下,Play商店甚至不允许发布应用程序!如果它们即使在运行时也相同,则 android studio 会在杂乱无章时提示开发人员卸载应用程序!您的回答也没有解决我的问题 1 和 2
    • 感谢您的回答!但当然我的问题是具有包名称的权限而不仅仅是包名称查看主题..通过 C2D_MESSAGE 错误 -505 并且在我的问题中我问的是 如果您从 Play 商店下载存在上述问题的应用程序,您将在尝试安装时收到 505 错误。 .. 阅读并回答!!
    猜你喜欢
    • 1970-01-01
    • 2017-08-12
    • 2016-12-05
    • 2017-07-31
    • 2017-09-22
    • 1970-01-01
    • 2017-07-02
    • 2019-03-27
    相关资源
    最近更新 更多