ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

由于我主要是在模拟器上进行测试,并且只是时不时地导出到真机,我不确定这是什么时候发生的。它没有安装在物理手机上但在模拟器中运行良好的可能原因是什么?

我已尝试重新启动手机并删除现有的 .apk,但不能解决故障。

当您说您已删除现有的 .apk 时,您的意思是您已从手机中卸载了该应用程序吗?如果没有,请先卸载该应用程序,然后再尝试重新安装。
TomS 所说的,运行 adb uninstall your.package.name,然后运行 adb install /path/to.apk。我不明白为什么那行不通。您在签名过程中是否进行了任何更改?
您是否尝试过直接从连接到计算机的设备中的 eclipse 中调试它,以查看日志是否还有其他内容?
我确实使用手机应用程序管理器中的卸载选项删除了该应用程序。
费利克斯。我从哪里运行这个 adb 东西?

C
Community

主要用于旧手机

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

https://i.stack.imgur.com/XLH2G.jpg

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


当您有旧手机时,请考虑此解决方案!我有一个装有 Android 4.4.2 的 Galaxy S4 mini,但我忘记检查“V1 签名”,所以它无法安装在设备中。检查后,apk 会像魅力一样安装。
谢谢! Android Studio 应在签署应用程序时提供有关此的更多信息,或者在您不勾选 V1 (Jar Signature) 时更清楚地说明它的作用
在我的情况下,我必须将此配置添加到清单文件 android:installLocation="internalOnly"
当我遇到问题时,我最初使用 v2 签名。然后我只用 v1 签名,然后它工作了。我在手机上运行 sdk23。
感谢您提及“清除调试应用程序的数据”。这对我有帮助
Q
Qasim

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

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


即使当我第一次尝试安装我的应用程序时,播放保护提示我说它无法验证该应用程序是否安全,并且我确实按下了“无论如何安装”该应用程序仍然无法安装。这个覆盖有效
Android 8 也是如此(只是为了完成报告的 7 和 9 之间的差距)。
这工作正常。安装 apk 后不要忘记恢复设置。
绝对可笑,但它奏效了。今天早上我已经安装了我的 APK 6 次,每次它都提示我是否真的想要安装,尽管它没有被 Play Store 识别或其他什么。然后突然它停止提示我,而是决定以无益的信息失败。这让我明白了。
这个,加上删除现有的应用程序,为我解决了这个问题。
t
the-drew

我有一个类似的问题,这是因为我试图在手机上安装一个具有相同 apk 的先前版本的 apk,并且两个 apk 都没有使用相同的证书进行签名。我的意思是当我使用相同的证书时,我能够覆盖以前的安装,但是当我在版本之间更改证书时,安装是不可能的。你用的是同一个证书吗?


是的,它是同一个证书。我想我以前有过一次。我曾尝试删除手机上现有的应用程序,并尝试安装未签名的版本。仍然收到相同的错误消息。
我也有同样的问题(以前版本的其他证书) - 具体来说,我隐式安装了它以使用调试器。 Revmoving 解决了它(不是你的情况,如下所示,但值得在这里注册)
这篇文章有 30 多个答案。我的建议是,每当您遇到此问题时,请在安装应用程序时观察设备日志。使用亚行日志猫。您将了解安装失败的确切原因。我的问题的日志是“包 com.companyname.appname 签名与以前安装的版本不匹配;忽略!”
我更改了包名。它奏效了。我意识到我已经测试了多个具有相同包名的应用程序,所以出现了错误。
是的!当我在手机上安装了应用程序的调试版本时,我正在尝试安装签名的发行版 apk 🤦
A
Astra Bear

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

对我的解决方案:返回设置/应用程序并滚动浏览所有应用程序,底部是我的 App1 的苍白版本(注意原始 App1 按字母顺序位于顶部,如上所述已删除)。单击苍白版本时,它显示“未为该用户安装”。 (我已将我的关系设置为拥有多个用户)。但是在右上角有一个三点按钮。我按了它,它说“为所有用户卸载”。我做了什么,它解决了这个问题。我现在可以单击 App1.apk 并且它安装得很好,没有错误。


有同样的问题。我激活了一个访客帐户,在删除该应用程序时,它并没有从所有用户中删除。
如果你能提供一些截图,我真的很感激
谢谢。我也遇到了这个问题。绝对不明显,第一次,卸载应用程序仅适用于当前活跃用户。为了避免每次都进入设置,我使用为所有用户卸载的命令 adb uninstall your.package.name
在花了大约几个小时研究之后,这救了我。设置的 UI 有点误导,在阅读这篇文章之前我从未注意到 3 个点。
什么是安卓版本? 6.0?
K
Kamran Bigdely

当我将我的 android 从 2.3.2 更新到 3.0.1 时,我遇到了这个问题。如果是这种情况,IDE 将自动考虑以下几点。

1.您不能通过传统方式安装android:testOnly="true"的应用程序,例如从Android文件管理器或从网站下载

2.Android Studio 在运行的 APK 上设置 android:testOnly="true"

如果您运行您的应用程序直接将设备连接到您的系统,apk 将安装并运行没有问题。

如果您通过从 build out put 和 debug 文件夹复制发送此 apk,它将永远不会安装在设备中。

解决方案:go Build ---> Build APK(s) ---> copy the apk file share to your team

那么你的问题就会解决。


这这这就是我的答案。太烦人了,这个简单的事情并没有在程序中公然意识到,或者通过设备上的任何错误消息。谢啦!
抱歉,但我没有得到解决方案,如果您构建 apk,它将存储在构建输出 -> 调试文件夹中,那么这里有什么区别。
Manifest 中的解决方案 android:testOnly="false" 完成了工作!!!!详细信息:三星 s5e、Android 10、签名版 APK、v1 签名。
在 Android Studio (Build -> Build APS(s)) 中构建 apk 对我有用。谢谢!
K
Krishnabhadra

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


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

在我的情况下,我将我的启动器活动声明为 android:exported="false"

<activity android:name=".MainActivity"
            android:exported="false">

我最近以 android 12 为目标,不得不将 android:exported 属性放在我的清单组件中,但不知道该放什么作为值。将值更改为 android:exported="true" 有效。


A
Akshay More

对于使用 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(如顶部屏幕截图所示)。之前必须删除以前的应用程序,然后安装一个新应用程序。
最近遇到这个问题。刚刚添加了 android:testOnly="false" 和 Build -> Build Apk 并完成了。都整理好了。谢谢!无需添加任何其他 android 属性,如 android:debuggable="true"。
testOnly="false" 成功了,谢谢!
S
Sergey Glotov

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

另一个可能的原因:您更改了启动活动。提示:永远不要对已经发布的应用程序这样做! Android Developers blog 中讨论的原因。


任何 ActivityServiceBroadcastReceiver 等的 +1 android:name 属性都不能在清单文件中更改。尽管它似乎是您应用程序中的私有标识符,但它是一个公共 API。
我必须更改我的启动活动,我添加了一个启动屏幕,在其中我必须在开始主要活动之前下载提要。除了将启动画面放在主要活动中之外,您还有其他解决方案吗?
您可以使用 标记来处理它!
1
124697

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

自签名后,它安装正常。


更多信息在这里:stackoverflow.com/questions/4853011/…
A
Adam Kis

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

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

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


T
Thinkcomplete

我遇到了同样的问题,解决方法如下:转到清单文件并确保将“可调试”和“仅测试”属性设置为 false。它对我有用:)


不确定“仅测试”是什么意思,但将 debuggable 设置为 true 并签署 apk 对我有用!
没有为我工作。我用过:android:testOnly="false" android:debuggable="false"
你能解释一下吗?我根本没有属性,没有设置真和不假,只是不存在。这条线看起来怎么样?
m
mastDrinkNimbuPani

我有同样的问题,即应用程序显示为已安装,但在点击图标时不会启动。经过一番摸索后,我发现我愚蠢地在 AndroidManifest 文件中为我的主启动器活动放置了“android:exported="false"”......一旦我删除它,应用程序就可以正常启动了......


是的,这方面的文档确实具有误导性。这意味着通过将此设置为 false,其他应用程序将无法运行您的 Activity。它并不是说 android OS 应用程序启动器无法运行您的 Activity !!!那应该是带有 72sp 字体的闪烁的红色字母。
S
Sergey Glotov

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

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

恢复,我的问题是在 JAVA 版本中。谢谢甲骨文!!


这为我修复了它...更多信息 stackoverflow.com/questions/6282169/…
这太不可思议了。这是用于模拟器还是设备?
R
Rule

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


从应用程序管理器中,选择应用程序(将显示但被列为已卸载)选择更多,然后将出现为所有用户卸载的选项。
N
Nelson Katale

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

https://i.stack.imgur.com/AQyIE.png

链接到解决方案 Android – App not installed error when installing a signed APK – How to Fix


这对我运行 Android 6 的设备很有帮助
M
Mike F

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

根据我的 AndroidManifest.xml 中的警告,我改变了...

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

至...

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

在那之后,我能够侧载我的应用程序——一次。然后,我又遇到了同样的“App not installed”错误。通过将 allowBackup 改回 true,它再次工作(至少一次)。

从答案的数量和答案的变化可以看出,这个问题的原因是多方面的。我分享这个以防它帮助别人。


我刚刚尝试将 android:allowBackup="true" 设置为 android:allowBackup="false",但仍然没有运气。
它说“清单合并失败并出现多个错误”
J
Jose Luis De la Cruz

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


Я
ЯegDwight

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

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


A
Andy

啊啊啊!当正确的设置是 DEBUG SDK 时,我试图安装为 Unsigned Release APK。

有一个小时。


E
Entropy1024

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


华为 P8 Lite,Android 6.0,只有:高级/内存和存储/默认位置:内部/SDCard 没有帮助。
C
Chinthaka Senanayaka

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

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

通过 Eclipse 导出 apk,右键单击 Android 项目 Android Tools > Export Signed Application Package,然后提供密钥库位置和密码。

这将在对 apk 进行压缩对齐的同时生成已签名的 apk。并且可安装。

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


m
mrts

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


我刚刚在同一个问题上浪费了两个小时。我的应用程序显示版本,例如。 “3.5.6”,但不显示它是调试版还是发布版。我一直在摆弄许多不同的文件并且忘记了我在哪里,并尝试使用 Release apk 更新 Debug apk。我认为 Android 曾经显示类似“文件签名冲突”的消息,但现在(Pie,9.0)您只会收到“未安装应用程序”,无法找到原因。惨痛的教训!
B
Baum mit Augen

这个问题我也解决了

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

只要确保您没有两次申报您的活动。


如果您在 Manifest.xml 文件中两次声明您的活动,则会显示编译错误,除非您有相同名称但在不同包中的相同活动,但这不适用于我,因为我检查了所有内容。
S
SMGhost

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

M
Michael Todd

显然,这也可能是由于在安装之前重命名 APK 造成的。我想通过缩短文件名来减少用户从我们的网站获取应用程序所需的打字量。之后,他们无法安装它。

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


我想在第一次安装时我更改了名称。现在默认(app_release.apk)不安装。也许我会尝试改变它......嗯。
G
Gabriel Sanmartin

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

android.injected.testOnly=false

N
Noby

检查安卓版本。

如果您正在安装非市场应用程序和不兼容的版本,您将收到此错误。

例如:应用程序的目标是 2.3.4 你的设备是 2.2 那么你会得到这个错误。


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

如果应用程序已安装或移动到 SD 卡,然后连接 USB 电缆,导致 SD 卡卸载,也可能出现“未安装应用程序”错误。

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


j
joepadz

我也遇到了这个问题。请尝试此解决方案。确保你的项目的包名与你之前已经安装在手机中的项目不同。我认为他们的名字有冲突。它在我身上起作用。


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