如何处理未知的安装错误代码-505?


9

我有一个Nexus 7,它刚刚更新为Android 5。

系统升级后,有两个应用给我带来了麻烦,我的孩子们玩的游戏。愚蠢的死亡方式和VVVVVV。升级后,这两个图标都有图标,但是单击时会出现一个弹出窗口,提示“未安装应用程序”。我尝试安装它们。下载很好。安装开始。然后出现错误信息:

应用程序安装期间出现未知错误代码:“-505”

两个应用程序完全相同的错误。我已重新启动设备,但无济于事。

我不知道下一步该怎么做。请能有什么好心的人给我一些有关如何解决这个问题的建议。

Answers:


10

TL; DR

当应用尝试重新声明现有权限时出现错误消息,就会发生此问题INSTALL_FAILED_DUPLICATE_PERMISSION。它主要影响了基于Adobe AIR(带有包前缀com.air)的应用。的主要原因是棒棒堂5.0不同的代码实现当验证使用证书的签名签署的应用程序。对于解决方案,只需跳至“解决方案”部分。

更新:Google已在Lollipop 5.0.1上修复了此问题。


技术细节

摘自AOSP问题跟踪器上的条目所链接的Android L Developer Preview问题跟踪器的摘录,

帖子4

logcat告诉我在安装过程中重新声明权限存在冲突(在我的情况下,Amazon试图重新声明getui.permission.GetuiService,它已由Camera 360拥有)

发布#12的LogCat

10-25 08:06:37.805   749   824 W PackageManager: Package com.tencent.mm attempting to redeclare permission com.google.android.c2dm.permission.SEND already owned by com.google.android.gsf
10-25 08:06:37.926  4812  4812 D Finsky  : [1] PackageInstallerImpl.cancelSession: Canceling session 121130466 for com.tencent.mm
10-25 08:06:37.926  4812  4812 E Finsky  : [1] PackageInstallerImpl.handleCommitCallback: Error -505 while installing com.tencent.mm: INSTALL_FAILED_DUPLICATE_PERMISSION: Package com.tencent.mm attempting to redeclare permission com.google.android.c2dm.permission.SEND already owned by com.google.android.gsf
10-25 08:06:37.926  4812  4812 W Finsky  : [1] 4.installFailed: Install failure of com.tencent.mm: -505 null
10-25 08:06:37.933   749   749 D ZenLog  : intercepted: 0|com.android.vending|-973170826|null|10017,!priority
10-25 08:06:37.933   749   749 V NotificationService: pkg=com.android.vending canInterrupt=false intercept=true
10-25 08:06:37.964  4812  4812 D Finsky  : [1] InstallerTask.cancelCleanup: Cancel running installation of com.tencent.mm

摘自AOSP问题跟踪器

帖子#4

在API19中,新的X509CertImpl(encCert)包装了证书(已经解析并准备用于SHA1计算),而在API 21中,证书将作为字节流转发,再次进行解析并由证书工厂处理。即哪个工厂取决于上下文。对于我测试过的L设备,工厂将创建一个OpenSSLX509Certificate。不幸的是,我们的证书中存在某些问题,openssl会遇到问题,并且在opensl处理期间会更改指纹。当我将证书转换为其他格式(例如PEM)时,也可以使用openssl工具来重现此内容。

如果SHA1将直接在'encCert.getEncoded()'上计算,则在两种情况下都是正确的。


更新:自2014年12月4日起,Google已在Lollipop 5.0.1上修复了此问题。对于那些没有尝试重新安装应用程序的人,您可以在准备好/等待OTA时刷新Lollipop 5.0.1映像。

帖子#20,#21

看起来此问题已在5.0.1中修复:

https://android.googlesource.com/platform/libcore/+/6632d8c9d8d1a3ac338d541676148677641bafe3

https://android.googlesource.com/platform/frameworks/base/+/32a22c44b8351c1cccd3a1f9c47a33469d9378e0

状态:已发布

致词

使用格式错误的证书恢复应用。

在Lollipop中有一个时间窗,在证书经过解码/编码周期后,我们会保留证书。编写良好的OpenSSL库在解码时是自由的(允许解析格式稍有误的证书),但在编码时则严格,为有效的同一个证书提供了不同的字节。

现在,相关的libcore更改(0c990ab4a90b8a5492a67b2b728ac9a4a1ccfa1b)会逐字返回原始字节,从而修复了Lollipop之前的安装以及在该更改之后进行的安装。

通过进行一次检查以查看证书是否有效,此更改可恢复在上述时间段内安装的所有应用程序。


有关其他建议的解决方案,请参考旧版本


我和David一样:无法从设备上卸载任何东西,ADB无法看到我的设备,再次尝试安装会导致Google Play -505,从本地APK安装时出现描述性错误。切换到访客也无济于事。
Roman R.

2
好吧,我刚刚意识到我也遇到了这个问题。我已成功使用卸载了有问题的应用程序adb,但无法重新安装。请注意,我要安装的应用程序具有air.com前缀作为程序包名称。看来这在Google,Adobe Air和应用程序开发人员之间更是一个问题。在至少其中一个修复它之前,将无法安装该应用程序。我为该问题加注了星标,以获取Google的更新。
安德鲁·T。

3
我在5.1.1上遇到了相同的错误(最新每晚cyanogenmod 12.1 galaxy s3)。他们是否以某种方式拥有旧代码,或者这是一个较新的错误?
ike

1
我在Android 6.0棉花糖上遇到此问题。是否有解决方案,或者只是等待OTA?

2
@Ben,这篇文章提到了INSTALL_FAILED_DUPLICATE_PERMISSION的问题,该问题已在5.0.1中修复。由于INSTALL_FAILED_CONFLICTING_PROVIDER,我在Marshmellow中遇到了此错误。我使用了Facebook SDK共享对话框的提供程序,该提供程序在我的调试版本和发行版本中均已声明,因此无法从Google Play商店安装发行版本。您可以在adb logcat中浏览确切的消息。就我而言,我选择通过在提供程序名称中使用manifestPlaceholders重命名调试版本的<provider>。
Mike Lambert
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.