如何在不卸载的情况下处理INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

Joh*_*nny 270 android

我试图重新安装一个apk

$adb install -r new.apk
Run Code Online (Sandbox Code Playgroud)

它显示错误:

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
Run Code Online (Sandbox Code Playgroud)

一种解决方案是卸载并安装new.apk,工作正常.

但我想知道是否可以重新构建apk并在没有卸载的情况下重新安装.例如.更改AndroidManifest.xml中的某些配置,或者不签署APK等.

如果您能告诉我"INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES"的全部含义,我们将不胜感激.

Com*_*are 311

这意味着应用程序的新副本(在开发计算机上)比您的应用程序(安装在设备/仿真器)的旧副本不同的签名密钥签署.例如,如果这是一个设备,你可能已经把旧的副本从一个不同的开发机器(例如,一些其他的开发人员的机器).或者,使用生产密钥签署旧密钥,并使用调试密钥对新密钥进行签名.

  • 请注意,`debug.keystore`不在您的项目目录中.它通常位于你的`〜/ .android /`目录中.(请参阅http://developer.android.com/guide/publishing/app-signing.html#debugmode) (12认同)
  • @ChristianBongiorno:同步您的签名密钥库(例如,`debug.keystore`).选择一个作为主密钥库,将其复制到所有其他开发人员计算机,替换现有密钥库. (6认同)
  • @atourney:您必须将以前计算机的密钥库(例如,`debug.keystore`)复制到新计算机上. (5认同)
  • 怎么能给调试包一个不同的名字?(例如{PRODUCT_NAME} Dev) (3认同)
  • 在复制文件后,不要忘记重建项目.我移动了文件并将应用程序重新发送到设备(但它仍然使用旧的`debug.keystore`).一旦我重建了项目(在Android Studio中使用Build-> Rebuild),密钥就会同步. (2认同)

Geo*_*old 48

我在测试新的Xoom时遇到了这个问题.我以前从Marketplace安装了我的应用程序.稍后在尝试测试新版本的应用时遇到了这个错误.

我通过删除通过Marketplace安装的应用程序来修复它(只需按住并拖动到垃圾箱).此后,我能够毫无问题地部署我的开发版本.

  • 是的,卸载将解决此权限问题.我想知道我是否可以在不卸载的情况下解决这个问题 (12认同)

小智 21

当团队中的另一位开发人员在我尝试部署的硬件设备上构建我们的应用程序时,就会发生这种情况.从硬件卸载应用程序修复了我的问题.

  • 大!在命令`adb uninstall <package name>`之后工作.谢谢. (16认同)
  • 我不明白为什么这个答案有赞成.他清楚地说"没有安装"! - (2认同)

Pau*_*aul 20

这是使用adb从设备卸载应用程序的命令:

adb uninstall <package name>
Run Code Online (Sandbox Code Playgroud)

  • 问题是如何在不卸载的情况下解决问题. (7认同)
  • 我不明白为什么这个答案有赞成票。他清楚地说“无需卸载”! (3认同)

ink*_*nky 9

即使在卸载原始APK之后我也遇到了这个错误,这很神秘.最后,我意识到我已经在Nexus 7上设置了多个用户进行测试,并且仍然为其他用户安装了该应用程序.一旦我为所有用户卸载它,错误就消失了.


小智 5

我在编写更新时更改了包名,以便我可以通过Eclipse在我的设备上调试它,而不删除已安装的旧版本.如果没有恢复我在尝试重新安装时使用的软件包名称,我也会遇到同样的错误.使用相同的包名称重新安装成功.