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

问题描述 投票:84回答:16

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

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

enter image description here

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

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

以下是该过程的步骤:

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

Here are the steps of the procedure:

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

I do select release build type instead of debugging

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

Just in case i also defined in the gradle file the signing keys but I must admit i dont know is it necessary.

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

如果可以的话请帮忙。

android certificate release android-install-apk
16个回答
68
投票

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

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

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

Link 1

希望它会对你有所帮助。


3
投票

Go To Build.Gradle(模块:app)

使用这个 - minifyEnabled false


3
投票

minifyEnabled false

在所有论坛进行了3天的研究之后,这是唯一对我有用的东西!


3
投票

在Android Studio 3.0及更高版本中

正如描述here

注意:“运行”按钮使用testOnly =“true”构建APK,这意味着APK只能通过adb(Android Studio使用)安装。如果你想要一个可以在没有adb的情况下安装的可调试APK,请选择你的调试版本,然后单击Build Bundle(s)/ APK(s)> Build APK(s)。

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

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


2
投票

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


1
投票

这可能是由于您选择了签名版本。在某些手机上,如果签名版本被选为V2,则会出现安装错误。因此,如果发生这种情况,请尝试选择V1,它肯定会起作用。


0
投票

文件>项目结构>构建变体>选择版本>确保'签名配置'不为空>如果从下拉窗口中选择$signingConfigs.release

我使用Android Studio 3.1.4做了这个,它允许我按照上面创建发布apk和释放键的所有步骤创建一个发布apk,并将信息添加到app gradle。干杯!


-1
投票

如果您的Android Studio版本大于3.0

看起来我们无法在build - > output-> apk文件夹上运行设备后直接使用apk。

升级到android studio 3.0后你需要去Build - > Build Apk(s)然后从build中复制apk - >输出 - > apk - > debug

enter image description here


58
投票

对于当前的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使用它。

45
投票

选择签名版本v1和v2都解决了我的问题....尝试itenter image description here


37
投票

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

enter image description here

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

enter image description here

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

enter image description here

enter image description here


13
投票

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


10
投票

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

enter image description here

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,但不是强制性的。 please see the details


4
投票

上面的shubham soni回答对我有用,实际上它恰好在android版本> = 5.0。在上面你能够安装只是在创建你的apkenter image description here时使用它...


4
投票

我在这里解决了这个问题

这个问题背后的原因是,手机中已有一个具有相同包装名称的应用程序,但您无法在手机菜单中找到它(U已经取消了安装,但实际上它仍在手机中)。

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

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

adb uninstall package name

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


3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.