繁体   English   中英

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

[英]Cannot install signed apk to device manually, got error "App not installed"

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

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

在此处输入图像描述

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

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

以下是该过程的步骤:

我 select释放密钥,键入密码。

以下是该过程的步骤:

我做select 发布构建类型而不是调试

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

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

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

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

如果可以的话请帮忙。

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

可能是您的开发版本没有正确卸载。

试试这个,

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

注意:这是用于棒棒糖及以上。 请参阅随附的屏幕截图。

Lollipop 及以上版本的完全卸载

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

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

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

选择签名版本 v1 和 v2 都为我解决了问题....试试看在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明

在此处输入图片说明

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

选择签名版本 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 和 Android Plugin for Gradle 2.2 使用 APK 签名方案 v2 和使用 JAR 签名的传统签名方案对您的应用程序进行签名。

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

在 Android Studio 3.0 及以上

如上所述这里

注意:运行按钮构建一个带有 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

以上 shubham soni 答案对我有用,实际上它发生在 android 版本 >=5.0 上。在上面你可以安装只在创建你的 apk 时使用它在此处输入图片说明 ...

在这里我解决了这个问题

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

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

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

adb uninstall package name

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

minifyEnabled false

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

转到 Build.Gradle(module:app)

使用这个- minifyEnabled false

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

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

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


在此处输入图片说明


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

如果你这样做:

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

在此处输入图片说明


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

您现在可以安装 apk。

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

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

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

从 AndroidManifest.xml 中删除android:testOnly="true"属性有效。 关联

如果您的 Android Studio 版本大于 3.0

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

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

在此处输入图片说明

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

我使用 Android Studio 3.1.4 完成了此操作,它允许我在执行上述创建发布 apk 和发布密钥并将信息添加到应用程序 gradle 的所有步骤后创建发布 apk。 干杯!

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

如果您的应用启用了 Google Play 应用签名,则无需卸载 Google Play 版本,请按照以下步骤操作:
1. 使用您的发布密钥制作您的应用程序的签名版本
2. 前往 Google Play 开发者控制台
3. 使用您的应用程序的新签名版本创建封闭轨道版本(Alpha 版或 Beta 版)
4.您现在可以下载由Google Play App Signing签名的apk,选择派生APK 在此处输入图片说明

  1. 安装下载的派生APK

原因是App Signing by Google Play使用不同的密钥签署发布的应用程序,如果您从 Play 商店安装了一个应用程序,并且您想在您的手机中测试新发布版本的应用程序(从 Android Studio 生成),“应用程序未安装”发生这种情况是因为旧版本和新版本由两个不同的密钥签名:一个使用Google Play 应用签名,另一个使用您的密钥。

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

就我而言,我试图测试安装已签名的 APK,但我设备上当前安装的版本未签名(直接从 Android Studio 构建调试版本)

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

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

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

我尝试了很多东西,以下组合有效

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

gradlew卸载全部

  1. 签名的发布和调试 apk 工作

(注:调试和发布配置有)

 minifyEnabled false shrinkResources false

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

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

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

在此处输入图片说明

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

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

以下是该过程的步骤:

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

以下是该过程的步骤:

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

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

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

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

我现在已经尝试了7次7次,所以我认为这个问题不仅是密码输入错误,而且我可以使用标准的debug android签名密钥来实现此目的。

如果可以的话请帮忙。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM