(如果你是通过谷歌搜索来找到这个错误的解决方案,下面的链接会给你一个答案,我的问题还有一些解释!)
可能重复
<子> INSTALL_FAILED_DUPLICATE_PERMISSION… C2D_MESSAGE 子> <子> Error -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.他们是否需要使用相同的权限?无论如何,他们会得到同样的东西。让app a用户pkg.name与权限permission.RECEIVE
应用B使用相同的包与另一个权限CONFIGURE_SIP
。这可以发生在他们见面时吗?(似乎是一个愚蠢的问题,但我想确认客户端手机中的其他应用程序也有同样的事情!)
2.有什么其他可能发生此错误的可能性?
- 应用程序使用签名级别安全性
定义自定义权限- 您尝试使用使用其他密钥签名的版本更新已安装的应用
- 测试设备运行的是Android 21或更高版本,支持多个用户
醇>
从this post获得了1 2 3!他们是真的吗?如果是,对它们的任何好的解释都会很好或者出现这个错误的其他原因吗?
在上述帖子中有很多好的答案!不要问如何解决这个问题!但它是如何产生的!此外,如果我提到/明白了什么问题,请记下来!!
谢谢。
修改:正如我所提到的,请注意该问题来自Play商店中已有的应用。而关于其他应用程序,我不知道!它存在于客户端的手机中。可能它也来自Play商店,因为即使开发者选项也未激活,直到我尝试在该手机上运行。他之前没有任何我公司的应用程序。他只是试着下载应用程序了505错误并开始解决。
而且我的第一个选择是删除该权限,它使应用程序安装成功(不是正确的事情,但确认问题在哪里)。这就是我需要知道这个错误的可能性的原因!
答案 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" />
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