安装apk文件时出现错误“程序包似乎已损坏”


74

我有一个奇怪的问题。我将Android Studio从2.3.3更新到3.0后出现了此错误。问题是当我尝试安装apk文件时说

应用未安装。该软件包似乎已损坏。

我曾尝试在调试版和发行版中都生成apk并尝试安装,但是每当我安装apk时,它都会显示相同的消息。

当我从android studio运行android项目时,它正在工作。可能是摇摇欲坠的问题,但无法解决。请帮忙


1
回答几件事,01.您的包裹名称是什么?02.该应用程序是否已安装在您的设备中?03.在升级您的工作室之前,这可以工作吗?04.您是否检查过设备设置“从外部来源安装”。
阿曼·谢哈尔

1
1)您正在使用仿真器吗?2)您的设备中是否还有其他具有相同软件包名称的应用程序?
罗纳克·塔卡

@Shekhar .. 01.更新android studio之前,我的程序包名称是相似的。.02.我尝试了两种方式..将旧版本的应用程序保留在设备中以及卸载了旧应用程序.. 03 ..是的,它在更新android studio之前正在工作.. 04.是的,它已经被检查..
user3678528 17-10-27

@Ronak Thakkar .. 1)我正在使用仿真器以及物理设备。一次一次
。.2

在仿真器和物理设备中都遇到相同的错误?
罗纳克·塔卡

Answers:


132

经过大量搜索后,我找到了解决方案:

转到“构建”->“构建Apk”。

创建APK之后,您将看到如下对话框。

在此处输入图片说明

单击查找并将其安装在手机中

请享用


3
!谢谢。我很困惑为什么没有Build Apk无法使用。
M. Usman Khan

6
@usman:-安全问题。如果有任何非开发人员想要您的APK,那么它很容易从您的文件夹中获取。因此,现在只有开发人员才能创建共享APK。
tej shah

2
谢谢!!如果您注意到,此过程生成的APK的大小几乎是常规“运行/构建”生成的APK大小的3倍。
普拉纳夫·玛哈詹

1
非常感谢。完美运作。它不会再显示以下消息。'未安装应用程序。软件包损坏”。以前,我只是从build文件夹中复制apk,这是行不通的。
BK19

3
此版本版本的解决方案(调试),但发布又如何呢?发布版本中发生相同的问题:(
Darshan Khatri

7

当我自己解决这个问题时,这里的答案无济于事,我的情况是由于某种原因,我将targetSdkVersiongradle应用程序模块文件从24降级到22,而且apk显然不接受另一个降级targetSdkVersion以安装在其上。

因此,一旦我将其更改回24,该错误就会消失并且应用程序已正确安装。


1
谢谢,我也是。我只看了清单,但是build.gradle似乎覆盖了清单的targetSdkVersion。
FrankKrumnow

1
@FrankKrumnow太好了,我可以帮助您解决问题,祝您好运。
Muhammed Refaat


2

就我而言 如果在更新应用程序时收到此错误,则可能是由于目标SDK版本引起的。在这种情况下,您将在日志中收到此错误;

"Package com.android.myapp new target SDK 22 doesn't support runtime permissions but the old target SDK 23 does"

这是因为您以前的应用程序是使用更高版本的sdk构建的。如果您的新应用是使用22构建的,而已安装的应用是使用23构建的,则The package appears to be corrupt更新时将出现错误。


2

真奇怪 我不知道为什么在生成签名的apk时会发生这种情况,但是以下步骤对我有用。

  1. 转到文件并选择使缓存/重新启动无效
  2. 之后,建立选择干净的项目
  3. 然后选择“重建项目”

而已。


1

就我而言,目标电话已经安装了该应用程序,但处于“禁用”状态。因此用户认为它已经被卸载了,但是还没有。我转到主应用列表,单击“已禁用”应用,将其卸载,然后APK继续运行。


0

没有答案对我有用。

由于错误消息包损坏,我将不得不运行

  1. adb uninstall <package name>
  2. 再次运行应用程序/使用adb安装

0

运行直接构建APK将起作用。但是请确保您卸载任何以前安装的同名软件包。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.