Java 尝试安装版本APK时出现错误代码-7

Java 尝试安装版本APK时出现错误代码-7,java,android,Java,Android,我已经采取了所有适当的步骤来创建发布APK。() 我的设备(Nexus 7 2012)已设置为允许从未知来源进行安装 我通过电子邮件向自己发送了APK(app release.APK),并试图从GMail中打开它,因为这应该是可行的 编辑:很抱歉,我还应该包括我确实从设置>应用>(有问题的应用)>“卸载”按钮卸载了该应用 但是,应用程序立即无法加载,只有以下logcat信息: 05-30 14:44:41.689 466-497/? W/PackageManager﹕ Package

我已经采取了所有适当的步骤来创建发布APK。()

我的设备(Nexus 7 2012)已设置为允许从未知来源进行安装

我通过电子邮件向自己发送了APK(app release.APK),并试图从GMail中打开它,因为这应该是可行的

编辑:很抱歉,我还应该包括我确实从设置>应用>(有问题的应用)>“卸载”按钮卸载了该应用

但是,应用程序立即无法加载,只有以下logcat信息:

05-30 14:44:41.689      466-497/? W/PackageManager﹕ Package edu.osu.expandablelistviewtest1 signatures do not match the previously installed version; ignoring!
05-30 14:44:41.914      466-497/? I/art﹕ Explicit concurrent mark sweep GC freed 74971(3MB) AllocSpace objects, 22(1348KB) LOS objects, 33% free, 28MB/43MB, paused 9.752ms total 220.463ms
05-30 14:44:41.927  20704-20704/? D/InstallAppProgress﹕ Installation error code: -7
05-30 14:44:43.094  20704-20704/? I/InstallAppProgress﹕ Finished installing edu.osu.expandablelistviewtest1
我尝试了我能想到的所有搜索字符串,但找不到关于错误-7含义的任何信息。查看,我们可以看到以下代码:

public void handleMessage(Message msg) {
  ...
  if (msg.arg1 == PackageManager.INSTALL_SUCCEEDED) {
    ...
  } else if (msg.arg1 == PackageManager.INSTALL_FAILED_INSUFFICIENT_STORAGE){
    ...
   } else {
    // Generic error handling for all other error codes.
    centerTextDrawable.setLevel(1);
    centerExplanationLabel = getExplanationFromErrorCode(msg.arg1);
    centerTextLabel = R.string.install_failed;
    mLaunchButton.setVisibility(View.INVISIBLE);
  }
  ...
  private int getExplanationFromErrorCode(int errCode) {
    Log.d(TAG, "Installation error code: " + errCode);
    switch (errCode) {
    case PackageManager.INSTALL_FAILED_INVALID_APK:
      return R.string.install_failed_invalid_apk;
    case PackageManager.INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES:
      return R.string.install_failed_inconsistent_certificates;
    case PackageManager.INSTALL_FAILED_OLDER_SDK:
      return R.string.install_failed_older_sdk;
    case PackageManager.INSTALL_FAILED_CPU_ABI_INCOMPATIBLE:
      return R.string.install_failed_cpu_abi_incompatible;
    default:
      return -1;
    }
  }
  ...
}
…所以我们无法知道“-7”是什么意思。(除此之外,没有任何开关箱。)


我愿意接受任何想法/建议。谢谢。

嗯,我觉得不好意思。毕竟,问题是在较新版本的Android中,以我上面提到的方式卸载只会卸载该特定用户

答案是转到设置>应用>(有问题的应用),然后从右上角的“…”菜单中选择“为所有用户卸载”

因此,对于未来的谷歌搜索者:


InstallAppProgress﹕ 安装错误代码:-7显然意味着您必须完全卸载应用程序的早期版本,如早期调试版本等。

PackageInstaller的错误代码常量在类中定义,前缀为INSTALL\u FAILED\u


(该链接对应于2015年6月25日的代码修订版,因此当您阅读此链接时,代码可能会更改。)

您的设备上以前是否安装过该应用程序?我已从“设置>应用程序>(有问题的应用程序)>“卸载”按钮卸载应用程序后,如果您尝试安装,则会出现相同的错误?是。我确保在尝试从下载安装之前卸载该应用程序。我假设
edu.osu.expandablelistviewtest1
是您的应用程序的软件包名称。不确定,但请尝试重新启动手机或使用之前使用的相同密钥签名。它抱怨你用不同的钥匙在上面签名。。但理想情况下卸载应该可以工作。除了这个正确答案:我处于死锁状态,无法安装已签名的APK(错误代码-7),但调试版本已经卸载。因此,首先必须重新安装调试版本,这应该是word。之后,通过“卸载所有用户”删除。在那之后,就可以安装已签名的APK版本了。我不知道我是如何只为我的用户(应该是唯一的用户)卸载了一半我的应用程序的。这个答案节省了我很多时间。谢谢你,我找到了解决办法。。另一个解决方案是运行“adb uninstall com.ephesoft.snapdoc”。。