App未安装'Android出错

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

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

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

我试过重启手机。删除现有的.apk并不能修复该错误。

725217 次浏览

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

最后我发现没有一个应用程序被成功安装,不仅仅是我的。我将SD卡默认的安装应用程序设置为自动。这就解决了问题。

我也遇到了同样的问题,下面是解决方法:转到Manifest文件,确保你有“Debuggable”和“Test Only”属性设置为false。这对我很有用:)

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

当我遇到这个问题时,我的自定义构建工具将ADT与用于iOS的证书一起使用(这当然不是我的第一个猜测,因为除了只有你应该有一个之外,Android证书似乎没有什么特别之处,他们只是RSA-1024证书,甚至自签名也是可以的,至少对于非市场安装)。

我也面临着同样的问题。问题是我的AndroidManifest.xml文件中的主要活动写了两次。我删除了副本。

我知道这是一个老帖子,但对新用户可能有用。我也遇到了同样的问题:我的应用程序在调试时工作得很好。当我签署APK时,我得到了同样的消息:“应用程序未安装”。

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

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

检查Android版本。

如果你安装的是非市场应用程序,和不兼容的版本,你会得到这个错误。

示例:应用程序目标到2.3.4 您的设备是2.2 然后你会得到这个错误。

我也解决了这个问题,

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

只要确保你不会重复申报你的活动。

我也遇到了同样的问题,即App显示为正在安装,但当点击图标时不会启动。经过一些头部撞击,我发现我已经愚蠢地放置了' android:exported="false" '为我的主启动器活动在AndroidManifest文件....一旦我删除它,应用程序启动正常。

如果应用程序已经安装到或移动到SD卡上,然后连接了USB线,导致SD卡卸载,也会出现“应用程序未安装”错误。

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

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

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

我也有同样的问题。我不知道即使是测试,应用程序也必须签名。

自签名后,它安装好了。

我用2个不同的证书为应用程序签名,所以用旧证书删除旧版本,然后重新安装新证书为我解决了这个问题

我也遇到过这个问题。 请尝试这个解决方案。确保您的项目的包名称不同于您的移动电话中已经安装的以前的项目。我觉得他们的名字有冲突。

我有同样类型的错误,这是由我的android manifest XML文件中的这一行引起的。

android:permission="android.permission.INSTALL_LOCATION_PROVIDER"

我去掉了那条线,问题就解决了。希望这能有所帮助

您也可能会遇到此问题,因为您的设备制造商没有授权谷歌商业应用程序,如Play Store, YouTube,谷歌地图等。遵循这个答案来解决问题。

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

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

我的问题和@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" />

我通过不首先签名应用程序和不使用Maven来解决这个问题。我将此添加到构建路径中。

    <plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<inherited>true</inherited>
<configuration>
<sign>
<debug>false</debug>
</sign>
</configuration>
</plugin>

之后,我手动签名我的应用程序:jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore /home/myself/.android/release.Keystore myapp-1.0.apk androidreleasekey

通过命令行创建keystore文件

Keytool -genkey -alias key_file_name。keystore -keyalg RSA -validity 1000000000000000 -keystore key_file_name.keystore

通过Eclipse导出apk,右键单击Android项目Android Tools >导出签名应用程序包,然后给出密钥库位置&密码。

这将crate signed apk,同时apk将被zipaligned。和安装。

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

这也可能发生在制作主屏幕小部件时,并且您的小部件XML文件在其android:configure属性中指定了错误的Activity。

当这个问题发生在我身上时,我通过删除项目文件夹中一些不重要的文件来解决它,比如密钥库。

事后看来,把你游戏的钥匙给别人可能不是什么好事。

尝试在AndroidManifest.xml中进行此更改:

  • 设置debuggable为true
  • 签署apk

显然,在安装之前重命名APK也可能导致这种情况。我想通过缩短文件名来减少用户从我们的网站上获取应用的输入量。在那之后,他们无法安装它。

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

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

我的解决方案:回到设置/应用程序,滚动所有应用程序和我的App1的在底部是一个苍白的版本(注意原来的App1是在顶部按字母顺序删除如上)。当点击苍白的版本时,它会显示“未为该用户安装”。(我把我的nexus设置为有多个用户)。但是在右上角有一个三个点的按钮。我按下这个,它说“为所有用户卸载”。我照做了,问题就解决了。我现在可以点击App1.apk,它安装良好,没有错误。

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

我的问题是,我在设备上有多个用户帐户。我删除了其中一个帐户的应用程序,但它仍然安装在另一个帐户。因此,名称空间发生碰撞,无法安装。卸载应用程序从所有用户固定它为我。

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

enter image description here

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

所以修复很简单:删除所有在我的手机上的构建(不管构建变体)..然后安装我的同事发来的apk ..而且效果很好

在marsmallallow中,在所有者和客户用户中都有。如果客人安装了相同的应用程序,我们不能在所有者安装相同的应用程序。我修复了这个删除客户应用程序

在我的情况下,我之前发布的应用程序已经通过另一个密钥签名,所以我已经卸载了它,但在我的测试手机(LG G4 H-818) 存在2个用户,所以之前的应用程序还在安装在我的手机和没有卸载正确!所以当我试图重新安装它时,它失败了…

所以我已经尝试更改用户和卸载之前的应用程序,最终应用程序安装正确。

希望这对你将来有所帮助:)

主要针对老款手机

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

enter image description here

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

在尝试安装应用程序时,打开你的logCat。将其设置为“无过滤器”。搜索“InstallAppProgress”包标识符。如果安装失败,您将看到“安装错误代码”。对我来说是

D/InstallAppProgress: Installation error code: -7

从这里,您可以使用链接来查找有关特定错误代码的信息。

确保考虑到以下建议:

  1. 你的build variantsFlavors应该是相同的(应用程序安装和新的),通常发布
  2. Signature文件必须是相同的(*.)jks文件)
  3. 你在build.gradleAndroidManifest中设置的版本比当前版本有更大的值(建议在build.gradle中设置version)
  4. URL是正确的(没有拼写错误),服务器是可达的(WebService/WebMethod/WIFI正在运行/可用…)
  5. 文件下载完整
  6. 文件正确保存到所需目录
  7. setDataAndType中的数据和类型的设置是正确的
我也面临着同样的问题。 在我的应用程序中有服务。 即使在应用程序卸载后,服务仍在后台运行,在执行应用程序强制停止后,收到应用程序已卸载的消息。 然后我安装了应用程序,没有任何问题

如果你尝试了上面所有的答案,没有一个有效,你可能想试试这个:

如果你的构建变量是'debug',那么你应该在应用程序构建gradle的buildTypes下添加这个,以便应用程序安装到你的设备上:

debug {
minifyEnabled false
}

我在向playstore发布最新应用时就遇到了这个问题。问题是结合改变MainLauncher和应用程序的快捷方式。

我们已经添加了一个启动画面,我们的入口点是SplashActivity而不是MainActivity。所以,那些有以前版本的人,在他们的主屏幕上有应用程序快捷方式,不能打开应用程序。它总是说类似App not installed吐司之类的东西。这并不是发生在每个发射器上(对我们来说,这在三星更常见)。

在幕后,App shortcut应该是无缝更新入口点,从MainActivitySplashActivity。但是,由于某种原因,许多第三方发射器不遵守该规定。修复方法是清除快捷方式并再次添加它。

如果你还没有在游戏商店中更新你的应用程序,请执行这篇文章

更新启动器活动时要小心。

在我的例子中,这是因为Android Studio 3.0在从release构建变体构建的apk上设置了android:testOnly="true"

https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html

所以运行./gradlew assembleRelease来解决我的问题

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

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

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

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

如果你从构建、放置和调试文件夹中复制这个apk,它将永远不会安装到设备中。

解决方案:去构建APK(s)——>复制apk文件共享到你的团队

这样你的问题就解决了。

  1. 在你的app模块(项目主模块)的build>output>apk文件夹中删除。apk文件。
  2. 从项目根目录中删除。idea和。gradle文件夹
  3. 清理项目。
  4. 在android studio的侧边栏中单击gradle图标,然后单击同步图标刷新所有项目。 现在运行项目,它应该工作

如果有人遇到此问题,请检查版本号。如果您的构建号小于已安装的应用程序构建号,您的应用程序将无法安装,您将获得“损坏的应用程序或apk文件”。

要修复它,只需增加您的版本号,直到它等于或大于已安装的版本号。

对于那些使用Android Studio 3的人。

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

在你的AndroidManifest.xml的application标签下添加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的菜单栏构建>构建APK(s)

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

android.injected.testOnly=false

在我的例子中,我删除了不需要的无用的权限

我只需要1许可

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

并删除不需要的权限,并开始给出此错误

<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER" />
<uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />

对我来说,在Android 9 (API 28)上,从播放商店应用程序禁用谷歌播放保护起了作用,我能够摆脱App not Installed错误。

禁用谷歌播放保护功能。打开“Play Store”应用=>点击 on菜单按钮=> select "Play Protect"选项=>禁用选项

.“扫描设备安全威胁”

打开AndroidMainfest,然后在应用程序标签中添加verionCode, versionName,并确保debug able等于false:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="...">


<application
...
android:debuggable="false"
android:versionCode="1"
android:versionName="1.0"
tools:ignore="HardcodedDebugMode">
...
</application>

然后打开构建。gradle (module:app)确保verionCode, versionName退出和minsdk <=您的移动sdk:

defaultConfig {
...
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
...
}

查找源代码:https://developer.android.com/studio/publish/

,https://developer.android.com/studio/publish/preparing

,https://developer.android.com/studio/publish/versioning

https://developer.android.com/studio/publish/app-signing

我的问题是:我使用了Android Studio中的调试Apk,这是在我执行运行命令时生成的

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

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

我曾以各种形式遇到过这个问题,但这一次是一个新的问题:

在这种情况下,我有提供商名称冲突-相同的提供商名称存在于我的应用程序和我的另一个应用程序。

如果您试图直接从谷歌驱动器安装apk,只需重新启动设备就可以为我解决问题。

当我安装到的设备没有足够的存储空间时,我遇到过这个“应用程序未安装”错误。删除几个文件就可以安装应用程序了。奇怪的是,它没有给我一个“空间不足”的消息。(注:我是从一个“未知”位置手动安装apk。)

有时存储不可用也是应该提到的,因为我面临这个问题,因为需要安装的设备没有足够的空间,而且系统也没有提醒用户。你可以通过调试找到答案

如果你正在使用cordova尝试卸载任何以前通过cordova构建的应用程序。 奇怪但这个方法解决了我的问题

在我把手机从Android Pie升级到Android 10之前,在实体手机上加载调试应用程序进行测试一直很可靠。在那之后,每当我试图侧面加载应用程序时,就会出现“应用程序未安装”错误。

根据我的AndroidManifest.xml中的警告,我从…

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

……

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

在那之后,我就可以侧面加载我的应用了——只有一次。然后,我又遇到了同样的“应用程序未安装”错误。通过将allowBackup更改回true,它再次工作(至少一次)。

从答案的数量和答案的变化可以明显看出,这个问题有很多原因。我把这个分享给大家,希望能帮助到其他人。

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

一个小时过去了。

这个答案是仅适用于使用本机库的应用程序 (Android NDK)。

在我的案例中,问题在于jniLibs中缺少一些用于目标电话CPU架构的本机库。因此,应用程序可以在模拟器上运行,但在真正的手机上,我看到“应用程序未安装”。

我最初只复制了x86架构的编译本机库,所以应用程序可以在模拟器上运行。但是,其他体系结构缺失(x86_64、armeabi_v7a、arm64-v8a)。在添加了缺失的*之后。所以所有架构的文件到jniLibs,“App未安装”错误消失了。

我今天遇到了类似的问题,起初我以为是我的sd卡损坏了它。我在许多运行android 4.4及更高版本的设备上尝试了它,但它一直带来同样的问题。经过一些谷歌和研究,我意识到我没有选择V1 jar签名,这是为比安卓7.0牛轧糖更老的设备,所以我通过选择两个复选框应用了这两个签名,并生成了一个有签名的apk,它工作。

enter image description here

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

在这种情况下,你已经从谷歌Play安装了应用程序的旧版本,你想测试应用程序的新版本:

  1. 打开谷歌播放控制台

  2. 将你的应用的新版本上传到Alpha / Beta,但不要发布它!

enter image description here

  1. 你现在可以下载派生的apk:
    enter image description here < / >
现在就在你的手机上安装下载的衍生apk。 衍生的apk由谷歌Play使用Android Studio生成的发布应用程序的不同密钥重新签名

你应该将其保存为Debug而不是release,检查两个JAR标志,并允许从你下载的地方安装应用程序(WhatsApp, chrome等…)

如果内存中没有足够的空间,也会发生这种情况。我有500Mb的空闲空间,但这还不够。免费试用1Gb以上。

有时是因为你的手机没有足够的空间。如果是这样,请尝试清理内存,为新安装创造空间。

我也有类似的情况。我能够在调试模式下使用USB安装应用程序,但不是签名版本。我可以在其他手机上安装签名版本,但不能在我的设备上安装。无数的理由和解决方案都没有帮助我。但我从“为所有用户卸载”的解决方案中得到了一个方向。 我所做的是再次在调试模式下使用USB连接安装应用程序,进入应用程序详细信息和“为所有用户卸载”。从右上方3个点-删除调试版本。这看起来像是清除了所有的引用。我通常做一个正常的卸载

现在我能够在设备上获得签名APK并成功安装。

我发现,如果我用compileSdkVersion构建我的应用程序,buildToolsVersion和targetSdkVersion都设置为默认值30在我的构建。Gradle文件,那么应用程序将无法安装在我的手机上。但是,如果我把它们改回版本29,它就可以工作了。问题是,从SDK 30开始,你需要选择V2 jar签名。更多信息见Android SDK 30为什么会生成无效的APK文件?

我尝试了所有通常发布的方法, 都要放弃了

我找到了一个应用程序,上面写着“apk签名者”,它做到了。

在我的例子中,我已经声明我的启动器活动为android:exported="false"

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

我最近瞄准了android 12,不得不把android:exported属性放在我的manifest组件中,但不知道该把什么作为值。将值更改为android:exported="true"有效。