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

在我最新导出的.apk上,当我尝试安装.apk时收到错误消息“未安装应用程序”。

由于我主要是在模拟器上进行测试,并且只有一次又一次地导出到真实电话中,所以我不确定这种情况何时发生。

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

评论

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

TomS所说的,运行adb卸载your.package.name,然后adb安装/path/to.apk。我不明白为什么这行不通。您在签名过程中进行了任何更改吗?

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

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

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

#1 楼

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

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

评论


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

–乔斯·拉蒙·加西亚(Jose Ramon Garcia)
17 Mar 9 '17 at 23:25

@JoseRamonGarcia有趣的是,我的手机和Android版本完全相同,哈哈!很高兴它对你有效

–恭恭敬敬
17 Mar 10 '17 at 0:04

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

–melledijkstra
18年1月16日在15:50

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

– avinash kumar
18-3-28在17:20



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

–琥珀色
19年5月5日在16:10

#2 楼

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


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


评论


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

–user2565663
19年2月15日在21:19

我在Android模拟器(API 28)中没有Play商店。

–杰里·道奇(Jerry Dodge)
19 Mar 7 '19 at 22:07

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

– cleardemon
19年3月25日在17:00

这很好。安装APK后,请不要忘记还原设置。

–拉哈马特
19 Mar 28 '19在14:33

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

–尼古拉·加拉齐(Nicola Gallazzi)
19年4月11日在19:10

#3 楼

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

评论


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

– Entropy1024
2010-11-19在16:24

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

–chesterbr
2010-11-29 2:35

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

– Manikandan
18年1月7日在17:36



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

–user30478
19年11月30日在9:30

#4 楼

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

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

评论


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

–肺泡
16年5月10日在16:51

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

–Filip Luchianenco
16年7月16日在23:05

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

–拉胡尔·阿罗拉(Rahul Arora)
17年8月13日在21:16

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

– Glenn
18年1月30日在23:30

谢谢。我也遇到了这个问题。第一次完全不了解卸载应用程序仅对当前活动用户执行。为了避免每次都进入设置,我使用了命令adb uninstall your.package.name,该命令确实为所有用户卸载。

– Xavier
18-09-18在7:59

#5 楼

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

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

2。如果您直接运行与设备连接的应用,则Android Studio会在从

运行的APK上设置android:testOnly =“ true”到您的系统,apk将会安装并运行。

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

解决方案:go Build ---> Build APK(s)--->将apk文件共享复制到您的团队

,那么您的问题将得到解决。

评论


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

– LFMekz
4月22日7:18

抱歉,但是我没有得到解决方案,如果您构建apk,它将存储在build输出-> debug文件夹中,所以这里有什么区别。

–Himanshu Malik
7月31日7:36

Manifest中的解决方案android:testOnly =“ false”可以完成工作!详细信息:三星s5e,Android 10,Signed Release APK,v1签名。

–jimver04
9月23日下午6:56

#6 楼

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

评论


感谢您的提示!在我的情况下,android:exported对于启动器活动设置为false

– ildar ishalin
19年5月24日在8:34

#7 楼

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

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

评论


清单文件中的任何Activity,Service,BroadcastReceiver等+1 android:name属性都无法更改。尽管它似乎是您应用中的私有标识符,但它是一个公共API。

–牛
2012年12月13日于1:22

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

–克里斯·辛(Chris Sim)
2014年6月25日9:05

您可以使用标记来处理!

– thiagolr
16年3月3日在8:52

#8 楼

我有同样的问题。我什至没有意识到即使进行测试也必须对应用程序进行签名。

自签名后,它就可以很好地安装了。

评论


此处了解更多信息:stackoverflow.com/questions/4853011/…

–弗朗西斯科·科拉莱斯·莫拉莱斯(Francisco Corrales Morales)
2014年4月22日,3:24

#9 楼

对于使用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”导致错误:避免对调试模式进行硬编码;省略它可以允许调试和发布版本自动分配一个[HardcodedDebugMode]。我尝试了android:testOnly =“ false”,同时使用签名版本为v1,v2的Build> Build Bundl(s)/ APK(s)> Build APK(s)和Build> Generate SignedBundle APK ...(如顶部屏幕截图所示) )。必须先删除以前的应用程序,然后再安装一个新的应用程序。

– CoolMind
18-10-15在13:40

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

– androidStud
19-10-31在22:05

#10 楼

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

评论


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

– ingh.am
2011年5月26日9:26



没为我工作。我曾经用过:android:testOnly =“ false” android:debuggable =“ false”

–弗朗西斯科·科拉莱斯·莫拉莱斯(Francisco Corrales Morales)
2014年4月22日,3:12

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

– pashute
18年8月19日在14:41

#11 楼

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

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

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

评论


这对我来说已经解决了...更多信息stackoverflow.com/questions/6282169/…

–格雷格·恩尼斯(Greg Ennis)
2012年3月8日在4:12

真是奇怪。这是用于仿真器还是设备?

–乔·普兰特
2012年10月30日12:11

#12 楼

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

评论


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

–Casey Murray
17年3月25日在17:48

#13 楼

我的问题是:我使用了Debug Apk,它是我在Android Studio中执行“运行”命令时生成的。解决方法是:不用项目文件,而是清理项目,然后单击“构建”>“构建APK”。来自Android Studio。然后,您可以使用从通常的文件夹(app / build / outputs / apk / debug /)中生成的APK。

这样生成的文件就安装好了。

评论


这实际上是我的解决方法。非常感谢,您为我节省了很多时间!

– Alienbash
12月24日0:44

#14 楼

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

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

#15 楼

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



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

评论


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

– Stefan Zhelyazkov
5月10日13:41

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

– Nelson Katale
5月16日17:29



#16 楼

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

评论


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

– SoulRayder
17年8月7日在17:53

华为P8 Lite(Android 6.0)仅具有:高级/内存和存储/默认位置:内部/ SDCard,但无济于事。

–kaay
18年1月16日在10:58

#17 楼

如果您有该应用程序的先前版本,请尝试先删除它,现在我的问题已通过该方法解决。

#18 楼

我也解决了这个问题,

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

请确保您没有两次声明您的活动。

评论


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

– blueware
17年12月3日,9:54

#19 楼

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

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

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

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

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

#20 楼

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

#21 楼

我的问题类似于@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" />


#22 楼

就我而言,这是因为我使用的是支持库28的Alpha版本。看起来Google将这些预发行版本标记为testOnly。如果您真的想这样发布(例如,您想像我一样推送内部Beta版),则可以将此行添加到gradle.properties文件中:

android.injected.testOnly=false


评论


我认为这是解决此类问题的最终方法

–乌斯曼·汗(M. Usman Khan)
19年3月2日在19:25

#23 楼

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

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

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


更改为...

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


之后,我能够一次加载我的应用程序。然后,我再次遇到相同的“未安装应用程序”错误。通过将allowBackup改回true,它可以再次工作(至少一次)。

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

评论


我只是尝试将android:allowBackup =“ true”设置为android:allowBackup =“ false”仍然没有运气。

– KRK
19-09-10的15:00

#24 楼

请检查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
18年8月19日在17:21



#25 楼

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

关闭电源USB存储或将应用移回内部存储将在这种情况下解决此问题。

#26 楼

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

评论


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

–阿斯特拉熊
16年8月15日,0:55

#27 楼

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

#28 楼

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

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

评论


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

– pashute
18年8月19日在17:26

#29 楼

使用Android Studio,我以前安装了APK的未签名调试版本(“构建”>“构建APK”),并且必须在安装已签名的发行版本之前将其卸载(“构建变体”>“构建变体:发布,构建”>“生成签名的APK”)。

评论


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

–斯蒂芬·霍斯金(Stephen Hosking)
5月21日5:11

#30 楼

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



发生的事情是其中一些构建是由我构建的,另一个是我构建的是由另一位开发人员发送给我的..在我有其他构建版本(由我自己构建)的情况下尝试安装开发人员时,导致上述错误。

所以解决方法很简单:删除手机上的所有构建版本(与构建变体无关)..然后安装我的同伴发送的apk ..它就像一个魅力

评论


有同样的问题,我想解决的办法是在使用口味时总是签署版本

– NickMCcomb
16年6月28日在2:11