无法手动将已签名的apk安装到设备上,出现错误"应用未安装"

时间:2015-12-14 11:27:24

标签: android certificate release android-install-apk

我想将我的应用程序发布到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次,所以我认为这个问题不仅仅是一个问题 输入错误的密码,也我可以使用标准的调试安卓签名密钥。

如果可以,请帮忙。

28 个答案:

答案 0 :(得分:64)

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

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

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

http://danceforovariancancer.com.au

希望它会对你有所帮助。

答案 1 :(得分:57)

对于当前的Updated Android Studio 2.3用户,这个答案适合您,因为Android开发人员在Android开发方面取得了巨大的进步,因此现在几乎没有人使用eclipse。

因此,请按照这种方式创建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. 从您选择要存储apk的explorer转到,您将看到.apk文件名app-release.apk使用它。

答案 2 :(得分:41)

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

答案 3 :(得分:34)

同样的事情发生在我身上,只要我从Build> Build APK生成了我的apk。我可以多次安装和卸载apk,而不会出现任何问题,但是,如果我生成了Build> Generate Signed APK,则当我将apk传递到手机并尝试安装它时,它只允许我一个一次,同一个人发出了以下消息:

enter image description here

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

enter image description here

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

enter image description here

enter image description here

答案 4 :(得分:13)

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

答案 5 :(得分:9)

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

enter image description here

v1方案

  

可以使用命令行jarsigner工具或来签署JAR文件   直接通过java.security API。每个文件条目,包括   META-INF目录中的非签名相关文件将被签名   如果JAR文件由jarsigner工具签名。对于每个文件条目   在签名的JAR文件中签名,创建单独的清单条目   只要它在清单

中不存在就可以了

V2计划

  

v1签名不保护APK的某些部分,例如ZIP   元数据。 APK验证者需要处理大量不受信任的(尚未   验证)数据结构,然后丢弃未涵盖的数据   签名。这提供了相当大的攻击面。而且,APK   验证者必须解压缩所有压缩条目,消耗更多时间   和记忆。为解决这些问题,Android 7.0推出了APK   签署方案v2

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

建议使用APK签名方案v2,但不是强制性的。 please see the details

答案 6 :(得分:4)

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

答案 7 :(得分:3)

我在这里解决了这个问题

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

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

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

adb uninstall package name

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

答案 8 :(得分:3)

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

答案 9 :(得分:2)

这是一个很老的问题,但我的解决方案是在 build.gradle

中更改 versionCode (增加)

答案 10 :(得分:2)

转到Build.Gradle(模块:应用)

使用此 - minifyEnabled false

答案 11 :(得分:2)

minifyEnabled false

在所有论坛进行了3天的研究后,

是唯一对我有用的人!

答案 12 :(得分:1)

在Android Studio 3.0及更高版本中

here

所述

注意:“运行”按钮会使用testOnly =“ true”构建一个APK,这意味着该APK仅可通过adb(Android Studio使用的adb)安装。如果您希望人们无需adb即可安装可调试的APK,请选择您的调试版本,然后点击构建捆绑包/ APK>构建APK。

在AndroidManifest.xml中的应用程序标记中添加android:testOnly="false"

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

答案 13 :(得分:1)

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

答案 14 :(得分:0)

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

我使用Android Studio 3.1.4做到了这一点,它使我能够按照创建发行版本apk和发行密钥并将信息添加到应用程序gradle的上述所有步骤创建发行版本apk。干杯!

答案 15 :(得分:0)

我在Android应用程序中遇到了同样的问题。 我只是更新了一些库,然后创建了Sign APK。现在开始工作。

答案 16 :(得分:0)

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


enter image description here


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

如果您这样做:

  • 通过将APK上传到Google控制台(像您一样)来安装更新 通常在更新您的应用程序时会出现):

enter image description here


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

您现在将能够安装apk。

答案 17 :(得分:0)

如果您的应用启用了 Google Play应用签名,则不必卸载Google Play版本,请按照以下步骤操作:
1.使用发布密钥制作签名版本的应用程序
2.转到Google Play开发者控制台
3.使用应用程序的新签名版本创建一个封闭的发行版(alpha或beta版)
4.现在,您可以下载由Google Play应用签名所签名的APK ,选择派生的APK enter image description here

  1. 安装下载的派生的APK

原因是如果您从Play商店安装了应用,并且要测试新发行版本的应用(由Android Studio生成),则通过Google Play进行应用签名会使用不同的密钥对发布的应用进行签名)在您的手机中,由于旧版本和新版本是由两个不同的密钥签名的,因此会发生“未安装应用”的情况:一个带有 Google Play的应用签名,另一个带有您的密钥。

答案 18 :(得分:0)

从AndroidManifest.xml中删除android:testOnly="true"属性是可行的。 link

答案 19 :(得分:0)

请卸载设备中的调试应用程序,或者只是增加版本代码以解决此问题

答案 20 :(得分:0)

在我的情况下,我试图测试是否安装了签名的APK,并且设备上的当前安装版本未签名(直接从Android Studio构建调试版本)

答案 21 :(得分:0)

Android Studio 4.1.1 如果您要创建调试apk,则在创建要在手机/模拟器上尝试运行的apk之前(立即创建已签名的apk会导致未安装APP ),您应该创建签名的bundle / apk

之前先清洁项目

答案 22 :(得分:0)

我在 MiA2 中使用 Android 10。我犯的错误是我试图通过 ES Explorer 安装该应用程序。我尝试了设置 -> 应用程序和通知 -> 高级 -> 特殊应用程序访问 -> 安装未知应用程序 -> ES 文件管理 -> 允许来自此来源。即使这样,该应用也不会安装。

然后我厌倦了使用默认的文件管理器安装该应用程序并且它很容易安装。

答案 23 :(得分:0)

检查的答案是针对有根设备的,或者至少对我不起作用。 我找到了一种方法,您可以通过使用 adb uninstall app.package.name 从 adb 卸载您的 apk 来简单地解决问题(确保您的手机上安装了 Debug 应用程序) 然后尝试安装签名的apk。希望这对你们有帮助。

答案 24 :(得分:0)

我尝试了很多东西,下面的组合奏效了

  1. 清理,重建
  2. 生成新密钥。我使用了一个以前没有使用过的新密钥别名。此外,对于所有密码,我只使用了字母和数字,没有任何空格或特殊字符
  3. 要从设备卸载任何 apk、版本等,我通过 USB 连接我的设备并运行命令
<块引用>

gradlew uninstallAll

  1. 已签名的发布和调试 apk 有效

(注:debug 和 release 配置有)

<块引用>
minifyEnabled false
shrinkResources false

答案 25 :(得分:0)

versionCodeversionName 必须高于应用级别 build.gradle file 的预览版本。

答案 26 :(得分:-1)

如果您的Android Studio版本大于3.0

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

升级到android studio 3.0后,您需要转到Build-> Build Apk(s),然后从build-> output-> apk-> debug复制apk

enter image description here

答案 27 :(得分:-2)

很明显,但是仍然很难为我找出答案,

请检查您的移动设备是否有足够的空间来安装apk。而且还不满。