【问题标题】:"App not installed" when trying to install over existing debug apk尝试安装现有调试 apk 时出现“未安装应用程序”
【发布时间】:2020-12-18 09:30:52
【问题描述】:

当两个或多个开发人员在一个团队中工作时,如果已安装的 APK 是由其他开发人员生成的,他们将无法覆盖该 APK。这是确切的场景:

  1. 两个开发人员正在开发同一个 Android 项目。
  2. 当开发者一生成和共享调试 APK。它已安装在设备上并正常运行。
  3. 当开发者二生成具有相同代码库的调试 APK 并尝试通过共享的应用程序安装应用程序时 开发人员一,它显示消息为“未安装应用程序”。
  4. 当开发者再次共享调试 APK 时,它会安装在现有应用之上。

谁能告诉为什么会出现这个错误,是否存在任何笔记本电脑级别的依赖性?

【问题讨论】:

  • 我认为在本地您需要先卸载应用程序,然后再安装另一个 APK。
  • 这有帮助,但我想知道原因?
  • 您必须卸载第一个应用程序才能安装另一个应用程序。为什么?因为指纹和签名等冲突。
  • 原因是两者都使用不同的机器。因此在生成 APK 时,它使用不同的签名。

标签: java android react-native android-studio flutter


【解决方案1】:

为什么会这样

发生这种情况是因为您在 Android 上构建的应用是使用在本地计算机上生成的特定密钥库进行签名的。因此,当开发人员 1 使用他的密钥库对应用程序进行签名时,它会获取他的指纹并且您可以正常安装它。但是当开发人员 2 使用他的(不同的)密钥库构建应用程序时,它会获得不同的指纹。因此,Android 不会让您覆盖已安装的应用程序。 解决方案是共享调试密钥库,以便所有 APK 的指纹对齐。

可以在~/.android/debug.keystore 中找到密钥库。

如何验证

您可以使用以下命令验证 APK 的指纹:keytool -printcert -jarfile app.apk,如果您输出 aab,则为 keytool -printcert -jarfile app.aab

【讨论】:

  • 两台电脑必须有相同的~/.android/debug.keystore。一个接一个地复制
  • 没错,正如我在回答中已经提到的那样:“解决方案是共享调试密钥库。”
【解决方案2】:

在生成调试 APK 之前,Android Studio 会使用 Android SDK 工具生成的调试证书自动为您的应用签名。因此,这两个 APK 都使用不同的密钥进行签名。

您可以阅读更多here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    相关资源
    最近更新 更多