无法手动将已签名的apk安装到设备上,出现错误"App not installed"

Ada*_*gyi 96 android release certificate android-install-apk

我想将我的应用程序发布到GooglePlay,但首先我想对签名的apk进行最后一次测试,以确保所有使用过的API密钥都能正常使用发布版本(GMaps,Facebook等)

所以我用我们的发布密钥制作了我的应用程序的签名版本,当我尝试将应用程序安装到设备时,我收到了一个错误:

在此输入图像描述

我试图将apk复制到设备并使用apk安装程序应用程序安装它.

奇怪的是,当我使用调试签名密钥执行相同的过程时,一切都很好,我可以安装并运行应用程序.

以下是该过程的步骤:

我选择了释放键,输入密码.

以下是该过程的步骤:

选择发布版本类型而不是调试

我选择发布版本类型而不是调试

以防我在gradle文件中定义了签名密钥,但我必须承认我不知道是否有必要.

以防我在gradle文件中定义了签名密钥,但我必须承认我不知道是否有必要.

我现在尝试了7次7次,所以我认为这个问题不只是输入错误的密码,我也可以使用标准的调试android签名密钥.

如果可以的话请帮忙.

Rag*_*han 73

您可能正在使用Android 5.0或更高版本的设备.

只需转到设置 - >应用程序 - >单击您的应用程序.--->在操作栏菜单的应用程序信息页面中,将有一个名为"为所有用户卸载"的选项单击该选项.您的应用将完全卸载,现在您可以尝试安装新版本,没有任何问题.希望对你有帮助

从下面链接检查我的解决方案.

链接1

希望它会对你有所帮助.

  • 虽然此链接可能会回答这个问题,但最好在此处包含答案的基本部分并提供参考链接.如果链接的页面发生更改,则仅链接的答案可能会无效. (2认同)

Cri*_*oGo 60

对于当前Updated Android Studio 2.3用户来说,这个答案适合你,因为现在很难有人使用eclipse进行Android开发,因为Android工作室有很大的进步.

因此,请按照这种方式创建您的Signed apk文件.

  1. Build>生成Signed apk.
  2. 创造Keystore path.
  3. Password, alias, key password.
  4. Build type相应地选择(例如在playstore使用中释放release).
  5. Signature Version选择两个V1V2复选框.
  6. Finsih.
  7. 转到explorer您为apk选择存储的位置,您将看到您的.apk文件名app-release.apk使用它.

  • 选择签名V1就可以了 (13认同)
  • 检查'V1`和'V2`是解决方案! (4认同)

Shu*_*oni 45

选择签名版本v1和v2都解决了我的问题....试试吧在此输入图像描述

  • 这完全是我的问题.问题仍然是我们为什么还要标记V1(jar签名)?谷歌如何期望我们知道这一点? (4认同)

小智 41

同样的事情发生在我身上,只要我从Build> Build APK生成我的apk.我可以安装和卸载apk,因为它们没有任何问题,但是如果我生成Build> Generate Signed APK,当我将apk传递给手机并尝试安装它时,它只允许我一个场合,出现以下信息的同一个:

在此输入图像描述

如果我选择"以任何方式安装",那么一切都很好,但是如果我卸载了应用并想重新安装它(可能的情况)会发生什么,发生了以下情况:

在此输入图像描述

所以我通过禁用播放保护解决了这个问题,我实现了(在Google Play中)>菜单>播放保护>搜索安全威胁(禁用).

在此输入图像描述

在此输入图像描述


Tar*_*ara 15

"应用未安装"显示具有相同包的应用已安装在同一设备中.只需删除您用于测试目的的第一个应用程序,然后再将其设置为签名apk.这会奏效.干杯!

  • 是的,我知道,但以前没有安装. (7认同)
  • 如何在不删除当前应用的情况下安装更高版本的apk? (5认同)

Lin*_*han 10

选择签名版本v1和v2将解决此问题

在此输入图像描述

v1计划

可以使用命令行jarsigner工具或直接通过java.security API对JAR文件进行签名.如果JAR文件由jarsigner工具签名,则将对每个文件条目(包括META-INF目录中的非签名相关文件)进行签名.对于在签名的JAR文件中签名的每个文件条目,只要清单中不存在该条目,就会为其创建单独的清单条目.

V2方案

v1签名不保护APK的某些部分,例如ZIP元数据.APK验证程序需要处理大量不受信任(尚未验证)的数据结构,然后丢弃签名未涵盖的数据.这提供了相当大的攻击面.此外,APK验证程序必须解压缩所有压缩条目,消耗更多时间和内存.为了解决这些问题,Android 7.0引入了APK Signature Scheme v2

默认情况下,Android Studio 2.2和Gradle 2.2的Android插件使用APK签名方案v2和使用JAR签名的传统签名方案签署您的应用程序.

建议使用APK签名方案v2,但不是强制性的. 请看详情


Ket*_*ani 10

在 Android Studio 3.0 及以上

如上所述这里

注意:运行按钮构建一个带有 testOnly="true" 的 APK,这意味着 APK 只能通过 adb(Android Studio 使用的)安装。如果您想要一个无需 adb 即可安装的可调试 APK,请选择您的调试变体并单击 Build Bundle(s) / APK(s) > Build APK(s)。

在 AndroidManifest.xml 中添加android:testOnly="false"内部Application 标签

参考:https : //commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html


HB.*_*HB. 8

我今天遇到了同样的问题,我记得我用“新”Google Play 签名对我的 apk 进行了签名:


在此输入图像描述


确保您是否使用 Google Play 签名对您的应用程序进行签名。

如果你这样做:

  • 将您的 apk 上传到 Google Console(就像更新应用程序时通常所做的那样):

在此输入图像描述


  • 成功上传后,Artifact library在菜单中打开。
  • 您将看到刚刚上传的 apk。
  • 按下载按钮并选择Download derived APK

您现在可以安装该 apk。

您可以在下载 apk 后删除草稿,而无需将应用程序更新到 Google Play 商店

  • 谢谢,经过3-4个小时的努力,终于成功了。 (2认同)

小智 7

以上shubham soni的答案对我有用,实际上它恰好在android版本> = 5.0.在上面你能够安装只是在创建你的apk时使用这个在此输入图像描述...


Ale*_*lan 6

在这里我解决了这个问题

出现这个问题的原因是,手机中已经有一个同名的应用程序,但在手机菜单中找不到(你已经卸载了,但实际上它还在你的手机中)。

要查看应用程序,请转到手机设置->应用程序。在那里您可以看到该应用程序,但在其中可能会禁用 UNINSTALL 按钮。单击菜单溢出按钮以查看所有用户的卸载

在为所有用户执行卸载后,我已经成功安装了我签名的 apk。您还可以使用 adb 从手机上卸载该应用程序。

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

除此之外, 如果您的手机支持多个用户,请检查是否未为其他用户安装相应的应用程序。如果它是为其他人安装的,请先卸载以前的应用程序,然后重试


小智 6

minifyEnabled false

在所有论坛上研究了 3 天后,这是唯一对我有用的方法!


Saa*_*man 6

Android Studio 4.1.1 如果您想创建调试 apk,并且在创建 apk 之前您尝试在手机/模拟器上运行(立即创建签名 apk 将导致应用程序未安装),则您应该在创建之前清理项目签名包/apk


小智 5

这是一个很老的问题,但我的解决方案是更改build.gradle中的versionCode(增加)


Vu *_*Duy 5

这可能是因为您从外部 SD 卡存储运行 APK 文件。只需将APK文件复制到内部存储即可解决问题


小智 5

转到 Build.Gradle(module:app)

使用这个- minifyEnabled false