Android 无法手动将已签名的apk安装到设备,出现错误“;“应用程序未安装”;

Android 无法手动将已签名的apk安装到设备,出现错误“;“应用程序未安装”;,android,certificate,release,android-install-apk,Android,Certificate,Release,Android Install Apk,我想向Google Play发布我的应用程序,但首先我想用已签名的apk进行最后一次测试,以确保所有使用的API密钥在发布版本(GMaps、Facebook等)中正常工作 因此,我刚刚用我们的发布密钥制作了一个签名版本的应用程序,当我尝试将应用程序安装到设备上时,出现了一个错误: 我已尝试将apk复制到设备上,并使用apk安装程序应用安装它。 奇怪的是,当我使用调试签名密钥执行相同的过程时,一切正常,我可以安装并运行应用程序。 以下是该过程的步骤: 我选择释放键,键入密码 我选择发布构建类型

我想向Google Play发布我的应用程序,但首先我想用已签名的apk进行最后一次测试,以确保所有使用的API密钥在发布版本(GMaps、Facebook等)中正常工作

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

我已尝试将apk复制到设备上,并使用apk安装程序应用安装它。

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

以下是该过程的步骤:

我选择释放键,键入密码

我选择发布构建类型而不是调试

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

我现在试了7次,所以我认为这个问题不仅仅是一个问题 输入错误的密码
,同样我可以使用标准的调试android签名密钥进行此操作。


如果可以,请提供帮助。

当同一设备中已安装具有相同软件包的应用时,将显示“未安装应用”。只需删除您用于测试目的的第一个应用程序,然后将其发送到已签名的apk即可。这会奏效的。干杯

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

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

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


希望它能对您有所帮助。

对于当前的
更新版Android Studio 2.3
用户,这个答案适合您,因为现在很少有人使用eclipse进行Android开发,因为Android Studio有着巨大的进步

因此,按照此方法创建您的
签名apk
文件

  • Build
    >生成
    已签名的apk
  • 创建
    密钥库路径
  • 输入
    密码、别名、密钥密码
  • 构建类型
    相应地选择(例如在playstore中发布使用
    发布
  • Signature Version
    选中
    V1
    V2
    复选框
  • Finsih
  • explorer
    转到您选择用于存储apk的位置,您将看到您的
    .apk
    文件名为
    app release.apk
    使用它

  • 这是一个很老的问题,但我的解决方案是在构建中更改versionCode(增加)。gradle在这里我解决了这个问题

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

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

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

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

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

    选择签名版本V1和v2对我来说都解决了问题。

    试试上面的shubham soni answer对我来说很有效,实际上,android版本>=5.0时也会出现这种情况。在上面的版本中,您可以在创建apk时使用它进行安装…

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

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

    v1方案

    可以使用命令行jarsigner工具或 直接通过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签名方案v2和传统签名方案(使用JAR签名)对应用程序进行签名

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

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


    使用此-minifyEnabled false

    minifyEnabled false

    是唯一一个在所有论坛上研究了3天后对我有用的minifyEnabled false shrinkResources false