我有一个在 Android 模拟器中运行的程序。我时不时地创建一个签名的 .apk 并将其导出到我的 HTC Desire 进行测试。一切都很好。
在我最新导出的 .apk 上,当我尝试安装 .apk 时收到错误消息“未安装应用程序”。它在模拟器上运行良好。
由于我主要是在模拟器上进行测试,并且只是时不时地导出到真机,我不确定这是什么时候发生的。它没有安装在物理手机上但在模拟器中运行良好的可能原因是什么?
我已尝试重新启动手机并删除现有的 .apk,但不能解决故障。
adb uninstall your.package.name
,然后运行 adb install /path/to.apk
。我不明白为什么那行不通。您在签名过程中是否进行了任何更改?
主要用于旧手机
我在尝试在运行 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 9 (API 28) 上,从 Play 商店应用中禁用 Google Play Protect 可以解决问题,并且我能够摆脱 App not Installed
错误。
禁用 Google Play 保护。打开“Play Store”应用程序=>点击菜单按钮=>选择“Play Protect”选项=>禁用“扫描设备以查找安全威胁”选项。
我有一个类似的问题,这是因为我试图在手机上安装一个具有相同 apk 的先前版本的 apk,并且两个 apk 都没有使用相同的证书进行签名。我的意思是当我使用相同的证书时,我能够覆盖以前的安装,但是当我在版本之间更改证书时,安装是不可能的。你用的是同一个证书吗?
显然,这个问题有很多原因。对我来说,情况是这样的:我已经从 Android Studio (v1.3.2) 中部署到我的 nexus 7(实际设备)。一切正常。然后我创建了一个签名的 apk 并上传到我的 Google Drive。从 USB 断开连接后,我转到设置/应用程序并卸载了我的应用程序(App1)。然后我打开谷歌驱动器并单击我的 App1.apk 并选择安装它(需要确保您在设置中允许安装 apk)。然后我收到可怕的消息“未安装应用程序”
对我的解决方案:返回设置/应用程序并滚动浏览所有应用程序,底部是我的 App1 的苍白版本(注意原始 App1 按字母顺序位于顶部,如上所述已删除)。单击苍白版本时,它显示“未为该用户安装”。 (我已将我的关系设置为拥有多个用户)。但是在右上角有一个三点按钮。我按了它,它说“为所有用户卸载”。我做了什么,它解决了这个问题。我现在可以单击 App1.apk 并且它安装得很好,没有错误。
adb uninstall your.package.name
。
当我将我的 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
那么你的问题就会解决。
我遇到了同样的问题。问题是我的 AndroidManifest.xml 文件中的主要活动被写入了两次。我删除了重复项。
android:exported
设置为 false 以用于启动器活动
在我的情况下,我将我的启动器活动声明为 android:exported="false"
<activity android:name=".MainActivity"
android:exported="false">
我最近以 android 12 为目标,不得不将 android:exported
属性放在我的清单组件中,但不知道该放什么作为值。将值更改为 android:exported="true"
有效。
对于使用 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(如顶部屏幕截图所示)。之前必须删除以前的应用程序,然后安装一个新应用程序。
testOnly="false"
成功了,谢谢!
如果您在 AndroidManifest.xml 中声明了两次 MainActivity,就会发生这种情况。
另一个可能的原因:您更改了启动活动。提示:永远不要对已经发布的应用程序这样做! Android Developers blog 中讨论的原因。
Activity
、Service
、BroadcastReceiver
等的 +1 android:name
属性都不能在清单文件中更改。尽管它似乎是您应用程序中的私有标识符,但它是一个公共 API。
我的问题是:我使用了 Debug Apk,它是在我从 Android Studio 执行 Run 命令时生成的
解决方案是:不使用此文件,而是清理项目,然后从 Android Studio 中单击 Build > Build APK(s)。然后您可以使用从通常文件夹(app/build/outputs/apk/debug/)生成的 APK
像这样生成的文件安装没有问题。
我遇到了同样的问题,解决方法如下:转到清单文件并确保将“可调试”和“仅测试”属性设置为 false。它对我有用:)
android:testOnly="false" android:debuggable="false"
我有同样的问题,即应用程序显示为已安装,但在点击图标时不会启动。经过一番摸索后,我发现我愚蠢地在 AndroidManifest 文件中为我的主启动器活动放置了“android:exported="false"”......一旦我删除它,应用程序就可以正常启动了......
我知道这是一篇旧帖子,但对新用户可能有用。我遇到了同样的问题:我的应用程序在调试时运行良好。当我签署 APK 时,我收到了相同的消息:“应用程序未安装”。
我修复了卸载我的 JDK(我使用的是 jdk-6u14-windows-x64)并安装了一个新的(jdk-6u29-windows-x64)。导出并再次签署 APK 后,一切正常!
恢复,我的问题是在 JAVA 版本中。谢谢甲骨文!!
我的问题是我在设备上有多个用户帐户。我删除了 1 个帐户上的应用程序,但它仍然安装在另一个帐户上。因此命名空间发生冲突并且没有安装。卸载所有用户的应用程序为我修复了它。
我今天遇到了类似的问题,起初我以为是我的 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 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"
,但仍然没有运气。
如果您有该应用程序的先前版本,请先尝试擦除它,现在我的问题已通过该方法解决。
如果应用程序未安装,请从 SD 卡中删除文件 .android_secure/smdl2tmpl.asec
。
如果文件管理器中的文件夹 .android_secure
为空,请将其从 PC 中删除。
啊啊啊!当正确的设置是 DEBUG SDK 时,我试图安装为 Unsigned Release APK。
有一个小时。
最后我发现没有成功安装任何应用程序,而不仅仅是我的。我将安装应用程序默认从 SD 卡设置为自动。那解决了它。
通过命令行创建密钥库文件
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。并且可安装。
如果您全部通过命令行,有时您可能会遇到“未安装应用程序”错误。 (应用程序未安装错误不仅会在使用命令行时发生。也可能是其他一些原因)
使用 Android Studio,我之前安装了 APK 的未签名调试版本(构建 > 构建 APK),并且必须在安装签名版本之前将其卸载(构建变体 > 构建变体:发布,构建 > 生成签名 APK)。
这个问题我也解决了
问题是我两次声明了我的主要活动,作为要加载的第一个活动,我还为它指定了一个意图过滤器,我再次在它下面再次声明了它。
只要确保您没有两次申报您的活动。
Manifest.xml
文件中两次声明您的活动,则会显示编译错误,除非您有相同名称但在不同包中的相同活动,但这不适用于我,因为我检查了所有内容。
我的问题类似于@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" />
显然,这也可能是由于在安装之前重命名 APK 造成的。我想通过缩短文件名来减少用户从我们的网站获取应用程序所需的打字量。之后,他们无法安装它。
一旦我恢复到创建和签署包时使用的原始文件名,我就能够更新已安装的应用程序。
就我而言,这是因为我使用的是支持库 28 的 alpha 版本。看起来 Google 将这些预发布版本标记为 testOnly。如果你真的想像这样发布(例如,你想像我一样推送一个内部测试版),你可以在你的 gradle.properties 文件中添加这一行:
android.injected.testOnly=false
检查安卓版本。
如果您正在安装非市场应用程序和不兼容的版本,您将收到此错误。
例如:应用程序的目标是 2.3.4 你的设备是 2.2 那么你会得到这个错误。
build.gradle
和 android 清单文件中都没有看到它。除非 compileSdkVersion
(值 23)或 minSdkVersion
(16)或 targetSdkVersion
(22)以某种方式指向所需的设置。我的 Galaxy 正在运行 android 7.0(并要求更新,但我还不允许)。我没有使用 android studio 来构建我的 react-native 应用程序,而是gradlew assembleRelease
如果应用程序已安装或移动到 SD 卡,然后连接 USB 电缆,导致 SD 卡卸载,也可能出现“未安装应用程序”错误。
在这种情况下,关闭 USB 存储或将应用程序移回内部存储将解决此问题。
我也遇到了这个问题。请尝试此解决方案。确保你的项目的包名与你之前已经安装在手机中的项目不同。我认为他们的名字有冲突。它在我身上起作用。
V1 (Jar Signature)
时更清楚地说明它的作用