Android上的“未安装应用”错误


425

我有一个在Android模拟器中运行的程序。我不时地一直在创建一个签名的.apk并将其导出到我的HTC Desire进行测试。一切都很好。

在我最新导出的.apk上,当我尝试安装.apk时收到错误消息“未安装应用程序”。它在模拟器上运行良好。

由于我主要在仿真器上进行测试,并且仅时不时地将其导出到真实手机中,因此我不确定这种情况何时发生。它没有安装在物理电话上但在仿真器中运行良好的可能原因是什么?

我尝试重新启动电话并删除现有的.apk,但无法解决问题。


5
当您说您删除了现有的.apk时,是否意味着您已从手机上卸载了该应用程序?如果不是,请先卸载应用程序,然后再尝试再次安装。
Telmo Marques 2010年

9
什么汤姆斯说,运行adb uninstall your.package.name,然后adb install /path/to.apk。我不明白为什么这行不通。您在签名过程中进行了任何更改吗?
菲利克斯(Felix)2010年

2
您是否尝试过直接从与计算机连接的设备中的eclipse对其进行调试,以查看日志是否还包含其他内容?
哈维

1
我确实使用手机上应用程序管理器中的卸载选项删除了该应用程序。
Entropy1024

菲利克斯 我从哪里运行这个adb东西?
Entropy1024

Answers:


265

主要用于较旧的手机

我只App not installed在尝试在运行于4.4.2 aka KitKat的手机上安装apk时遇到错误,但我的朋友在运行6+的手机上未遇到此错误。我尝试了其他解决方案,例如删除该应用程序的旧版/调试版,因为apk是发行版,清除了调试应用程序的数据,甚至清除了我所有的缓存数据。然后,最终我意识到我要做的就是在构建签名的apk时选择两个签名版本。

在此处输入图片说明

在我只V2 (Full APK Signature)选择之前,但是在选择之后V1 Jar Signature,我也能够在我的4.4.2设备上成功安装签名的APK。希望这对别人有帮助!


6
如果您的手机较旧,请考虑此解决方案!我有一个配备Android 4.4.2的Galaxy S4 mini,但我忘记了检查“ V1签名”,因此无法将其安装在设备中。检查后,apk会像吊饰一样安装。
Jose Ramon Garcia'3

1
@JoseRamonGarcia有趣的是,我的手机和Android版本完全相同,哈哈!很高兴它为你工作
克里斯宫

1
谢谢!Android Studio在对应用程序进行签名时应提供有关此信息的更多信息,或使其在不打勾的情况下更加明显V1 (Jar Signature)
-melledijkstra

就我而言,我必须将此配置添加到清单文件android:installLocation =“ internalOnly”
avinash kumar,

1
我最初遇到问题时是使用v2签名的。然后我仅使用v1签名,然后它起作用了。我在手机上运行sdk23。
琥珀

206

对我而言,在Android 9(API 28)上,从Play商店应用中禁用Google Play Protect可以解决问题,而且我能够摆脱App not Installed错误。

禁用Google Play保护。打开“ Play Store”应用程序=>点击菜单按钮=>选择“ Play Protect”选项=>禁用选项“扫描设备是否存在安全威胁”。


4
即使当我第一次尝试安装我的应用程序时,游戏保护提示我说它无法验证该应用程序是否安全,并且我确实按了“无论如何都安装”,该应用程序仍然无法安装。此覆盖有效
user2565663

我在Android模拟器(API 28)中没有Play商店。
杰里·道奇

3
在Android 8上也是如此(只是为了完成报告的7和9之间的差距)。
cleardemon

3
这很好。安装APK后,请不要忘记还原设置。
拉哈马特

非常感谢,解决了我的小米Redmi 5 Plus上的问题
Nicola Gallazzi

150

我遇到了类似的问题,这是因为我试图在具有相同apk早期版本的手机上安装apk,并且两个apk均未使用相同的证书签名。我的意思是,当我使用相同的证书时,我可以覆盖以前的安装,但是当我在两个版本之间更改证书时,则无法进行安装。您是否使用相同的证书?


9
是的,它是同一证书。我想我曾经有过一次。我尝试删除手机上的现有应用程序,还尝试安装未签名的版本。仍然会收到相同的错误消息。
Entropy1024

2
我也有同样的问题(带有其他证书的先前版本)-具体来说,我隐式安装了它以便使用调试器。搬迁解决了它(不是您的情况,如下所示,但是值得在此处注册)
chesterbr

11
该帖子有30多个答案。我的建议是,每当遇到此问题时,在安装应用程序时观察设备日志。使用adb logcat。您将了解安装失败的确切原因。我的问题的日志是“软件包com.companyname.appname签名与以前安装的版本不匹配;忽略!”
Manikandan

我更改了包裹名称。而且有效。我意识到我已经用相同的程序包名称测试了多个应用程序,所以出现了错误。
user30478 '19

120

显然,有很多原因导致此问题。对我来说情况是这样的:我已经从Android Studio(v1.3.2)内部署到我的nexus 7(实际设备)。一切正常。然后,我创建了一个签名的APK,并上传到我的Google云端硬盘。从USB断开连接后,我转到设置/应用程序并卸载了我的应用程序(App1)。然后,我打开Goog​​le驱动器,然后单击我的App1.apk并选择安装它(需要确保您已允许在设置中安装apk)。然后我收到了可怕的消息“未安装应用程序”

对我而言的解决方案:返回设置/应用程序,并滚动查看所有应用程序,并在底部滚动查看我的App1 的浅色版本(请注意,原始App1按字母顺序位于顶部,已如上删除)。单击浅色版本时,显示“未为此用户安装”。(我已将自己的关系设置为拥有多个用户)。但是在右上角有一个三点按钮。我按了此按钮,并说“为所有用户卸载”。我做了,它解决了问题。现在,我可以单击App1.apk,它安装正确,没有错误。


1
是的,我有多种原因,这就是其中之一。谢谢!
Alveoli

1
有同样的问题。我已激活了一个来宾帐户,并且在删除该应用程序时,并未将其从所有用户中删除。
Filip Luchianenco '16

2
这确实很有帮助,在发现该问题之前,我先安装/卸载了我的应用约20次。非常感谢!:-)
Rahul Arora

3
如果只有StackOverflow,让我们投票不止一次。大约一年前,这种解决方案对我有所帮助。我投票赞成,并立即忘记了。今天遇到了同样的问题,它再次帮助了我。试图投票赞成,StackOverflow说我已经有。那好吧。
格伦

2
谢谢。我也遇到了这个问题。第一次,仅卸载当前活动用户的应用程序绝对是不明显的。为避免每次都进入设置,我使用了adb uninstall your.package.name对所有用户都卸载的命令。
Xavier

61

我将Android从2.3.2更新到3.0.1时遇到了问题。在这种情况下,IDE将自动考虑以下几点。

1.您无法通过常规方式(例如,通过Android文件管理器或从网站下载)使用android:testOnly =“ true”安装应用程序

2.Android Studio在从以下位置运行的APK上设置android:testOnly =“ true”

如果您运行直接将设备连接到系统的应用,则apk将安装并运行。

如果您是通过build put和debug文件夹通过副本发送的apk,则它将永远不会安装在设备中。

解决方案:去构建--->构建APK --->将apk文件共享复制到您的团队

那么您的问题就会解决。


1
你救了我的工作!谢谢!
img.simone

1
哦,上帝,我花了3小时..
cuddlemeister

有用!谢谢!
彼得

1
这就是这里的这就是我的答案。太烦人了,以至于没有在程序中公然意识到这个简单的东西,也没有通过设备上的任何错误消息。谢啦!
LFMekz

29

我面临着同样的问题。问题是我的AndroidManifest.xml文件中的主要活动被写入了两次。我删除了重复项。


感谢您的提示!就我而言android:exported,发射器活动设置为false
ildar ishalin

21

如果您在AndroidManifest.xml中两次声明了MainActivity,则会发生这种情况。

另一个可能的原因:您更改了启动活动。提示:永远不要对已经发布的应用程序进行操作!Android Developers博客中讨论的原因。


4
+1 android:name的任何属性ActivityServiceBroadcastReceiver等不能在manifest文件改变。尽管它似乎是您应用程序中的私有标识符,但它是一个公共API。
caw 2012年

我必须更改启动活动,添加了初始屏幕,并且在其中必须下载提要,然后才能开始主要活动。除了将启动屏幕放入主要活动之外,您还有其他解决方案吗?
克里斯·辛

2
您可以使用<activity-alias>标记来处理!
thiagolr '16


14

我遇到了同样的问题,这是如何解决它:转到Manifest文件,并确保将“ Debuggable”和“ Test Only”属性设置为false。它对我有用:)


2
不知道您所说的“仅测试”是什么意思,但是将debugbable设置为true并为apk签名对我有用!
ingh.am,2011年

没为我工作。我曾经用过:android:testOnly="false" android:debuggable="false"
Francisco Corrales Morales 2014年

你能解释一下吗?我根本没有属性,没有设置true和false,只是不存在。线条看起来如何?
pashute

14

对于使用Android Studio 3的用户。

Suryanarayana Reddy的答案是正确的,因为它没有说明解决问题的步骤,因此。

在您的AndroidManifest.xml中的应用程序标签下添加testOnly="false"android:debuggable="true"就像这样:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:testOnly="false"
    android:debuggable="true"
    >


然后在AndroidStudio的菜单栏中进行编辑,然后选择Build> Build APK(s)


谢谢!android:debuggable="true"导致Error: Avoid hardcoding the debug mode; leaving it out allows debug and release builds to automatically assign one [HardcodedDebugMode]。我尝试了android:testOnly="false"Build > Build Bundl(s) / APK(s) > Build APK(s)并且都Build > Generate SignedBundle APK...使用了签名版本v1,v2(如顶部的屏幕截图所示)。必须先删除以前的应用程序,然后再安装一个新的应用程序。
CoolMind

最近遇到这个问题。刚刚添加了android:testOnly =“ false”并构建->构建Apks并完成。全部排序。谢谢!无需添加任何其他android属性,例如android:debuggable =“ true”。
androidStud

12

我知道这是一篇旧文章,但对新用户可能有用。我遇到了同样的问题:调试时,我的应用程序运行良好。当我签署APK时,我得到了相同的消息:“未安装应用程序”。

我修复了卸载我的JDK(我正在使用jdk-6u14-windows-x64)并安装了一个新JDK(jdk-6u29-windows-x64)的问题。导出并再次签名APK后,一切正常!

继续,我的问题是在JAVA版本中。谢谢Oracle!



2
真是奇怪。这是用于仿真器还是设备?
乔·普兰特

12

我的问题是我在设备上有多个用户帐户。我删除了1个帐户上的应用程序,但仍将其安装在另一个帐户上。因此,名称空间发生冲突并且没有安装。从所有用户卸载该应用程序后,为我修复了该应用程序。


2
在“应用程序管理器”中,选择应用程序(将显示该应用程序,但该应用程序将显示为已卸载),然后选择“更多”,然后将出现“为所有用户卸载”选项。
Casey Murray

9

我的问题是:我使用了Debug Apk,它是我在 Android Studio中执行Run命令时生成的

解决方案是:清除项目,而不是使用此文件,然后单击“构建”>“从Android Studio中构建APK”。然后,您可以使用通常文件夹(app / build / outputs / apk / debug /)中生成的APK

像这样生成的文件安装没有问题。


7

如果未安装应用程序,请删除文件 .android_secure/smdl2tmpl.asec从SD卡中。

如果.android_secure文件管理器中的文件夹为空,请从PC上将其删除。


5

最后,我发现没有成功安装任何应用程序,而不仅仅是我的。我将“安装应用程序”默认值从SD卡设置为“自动”。这样就解决了。


1
你怎么做到的?我在设备上根本找不到此选项
SoulRayder

华为P8 Lite(Android 6.0)仅具有:高级/内存和存储/默认位置:内部/ SDCard,但没有帮助。
kaay,


5

我也解决了这个问题

问题是我两次声明了我的主要活动,On作为要加载的第一个活动,我还为其指定了一个意图过滤器,而在它之下又一次声明了它。

只要确保您不要两次声明您的活动。


如果您在Manifest.xml文件中两次声明了活动,那么除非您具有相同名称的相同活动,但是在不同的程序包中会显示编译错误,但是这对我不起作用,因为我检查了所有内容。
blueware's

5

通过命令行创建密钥库文件

keytool -genkey -alias key_file_name.keystore -keyalg RSA -validity 1000000000000000 -keystore key_file_name.keystore

通过Eclipse导出apk,右键单击Android项目Android工具>导出签名的应用程序包,然后提供密钥库位置和密码。

这将创建带签名的apk,同时将apk对齐。并可以安装。

如果您全部通过命令行,有时您可能会遇到“未安装应用程序”错误。(应用程序未安装错误不仅会在使用命令行时发生。也可能是其他一些原因)


4

我遇到了同样的问题,即App显示为已安装,但在点击图标时无法启动。经过一番敲打,我发现我已经将自己的主要启动器活动'android:exported =“ false”'愚蠢地放置在AndroidManifest文件中...。删除它后,该应用程序启动正常。


4

我的问题类似于@Lunatikzx。由于错误的权限标签被写为应用程序的属性,因此:

<application
    android:permission="android.permission.WRITE_EXTERNAL_STORAGE"
    android:label="@string/app_name"
    android:icon="@drawable/ic_launcher"
    android:testOnly="false"
    android:debuggable="true">

对我来说解决的是将权限标签更改为单独的标签,如下所示:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

4

在将手机从Android Pie升级到Android 10之前,将侧面加载调试应用程序以在物理电话上进行测试的工作可靠地进行。此后,每次我尝试侧面加载该应用程序时,都会出现“未安装应用程序”错误。

基于我的AndroidManifest.xml中的警告,我从...

<application
    android:name=".App"
    android:allowBackup="true" ... />

至...

<application
    android:name=".App"
    android:allowBackup="false" ... />

之后,我能够一次加载我的应用程序。然后,我再次遇到相同的“未安装应用程序”错误。通过更改allowBackuptrue,它再次起作用(至少一次)。

从答案的数量和答案的变化可以明显看出,此问题有很多原因。如果有帮助,我会与大家分享。


我只是尝试设置android:allowBackup="true"android:allowBackup="false",仍然没有运气。
KRK

3

查看Android版本。

如果您要安装非市场应用程序和不兼容的版本,则会出现此错误。

例如:目标为2.3.4的应用程序您的设备是2.2,然后您将收到此错误。


我在gradle配置文件中的哪里可以看到android的目标版本?我build.gradle在Android清单文件中都没有看到它。除非compileSdkVersion(值23)或minSdkVersion(16)或targetSdkVersion(22)以某种方式指向所需的设置。我的银河系统正在运行android 7.0(并要求进行更新,但我还不允许这样做)。我不是使用android studio来构建我的react-native应用程序,而是gradlew assembleRelease
pashute

3

如果已将应用程序安装到SD卡或将其移动到SD卡,然后连接了USB电缆,导致SD卡卸下,则也会发生“未安装应用程序”错误。

在这种情况下,关闭USB存储设备或将应用程序移回内部存储设备将解决此问题。


3

我也遇到了这个问题。请尝试此解决方案。确保您的项目的程序包名称与您的手机中已安装的先前项目不同。我认为他们的名字有冲突。它对我有效。


2
那会起作用,但是没有最好的解决方案,因为您最终将安装数百万个应用程序。请参阅上面的其他一些答案。
Astra Bear

3

您还可能会遇到此问题,因为您的设备制造商未许可Google商业应用(例如Play商店,YouTube,Google地图等)的许可。请按照以下答案解决问题。


3

显然,这也可能是由于在安装APK前重命名了APK而引起的。我想通过缩短文件名来减少用户从我们的网站上获取该应用程序所需的键入次数。此后,他们无法安装它。

恢复为创建和签名软件包时使用的原始文件名后,便能够更新已安装的应用程序。


我认为在第一次安装时我更改了名称。现在,默认(app_release.apk)未安装。也许我会尝试更改它。
pashute

3

使用Android Studio,我之前已经安装了APK的未签名调试版本(Build> Build APK),并且必须在安装签名发布版本之前将其卸载(Build Variants> Build Variant:releaseBuild> Generate Signed APK)。


1
我只是在同一问题上浪费了两个小时。我的应用显示版本,例如。“ 3.5.6”,但不显示它是调试版本还是发行版本。我一直在摆弄许多不同的文件,并且不知道自己在哪里,并尝试使用Release apk更新Debug apk。我认为Android曾经显示过“冲突文件签名”之类的消息,但是现在(Pie,9.0),您只得到“未安装应用程序”,无法选择原因。痛苦的教训!
Stephen Hosking

3

对我来说,原因是我在同一部手机上使用不同的构建变体进行了多个构建:

在此处输入图片说明

发生的事情是其中一些是建造的,另一个是由另一位开发人员发送给我的。尝试安装开发人员,而我有其他构建(由我构建)则导致上述错误。

因此修复很简单:删除我手机上的所有版本(无论版本如何)..然后安装我的同伴发送的apk。


有同样的问题,我想解决的办法是在使用调味

3

今天我遇到了类似的问题,起初我以为是我的SD卡损坏了它。我在许多运行android 4.4及更高版本的设备上进行了尝试,但它一直带来相同的问题。经过一些谷歌搜索和研究后,我意识到我没有选择适用于android 7.0牛轧糖之前版本的v1 jar签名,因此我同时使用了通过选中两个复选框来生成这些签名,并生成一个签名的apk,它可以正常工作。

在此处输入图片说明

链接到Android解决方案–安装签名的APK时未安装应用程序错误–如何解决


这对运行Android 6的设备帮助了我
Stefan Zhelyazkov,

我很高兴这个答案可以帮助您解决问题。@ StefanZhelyazkov
Nelson Katale

2

制作主屏幕小部件时,也可能发生这种情况,并且小部件XML文件的android:configure属性中指定了错误的活动。

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.