安装失败,因为:'null'-Android Studio 3.5


83

自从遇到APK安装问题以来,我已将Android Studio更新至3.5。这是它显示的唯一日志:

Installation did not succeed.
The application could not be installed: INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION
Installation failed due to: 'null'
Retry

尝试在真实设备上安装APK时会发生这种情况。如果我从设备上卸载该应用程序,然后重新运行该版本,则它只会安装一次,然后在下一次安装时会不断抛出此错误。它可以在仿真器上正常运行,但我不能为所有功能使用仿真器。

我试过的

  • 删除的Android Studio配置文件。
  • 从项目中删除了Gradle文件。
  • 无效和重置缓存。
  • 清理/重建项目。
  • 寻找类似的问题Stackoverflow(没有匹配我的问题)
  • 全新安装(删除了包括SDK在内的所有文件)Android Studio 3.5

更新资料

我在计算机上安装了Linux Mint,并在那里测试了AS 3.5,由于某种原因,即使对于Android 7及更低版本的设备,一切都可以正常工作。

以前的操作系统:Windows 10 1903

当前操作系统:Linux Mint 19.2

我认为此问题可能源自Windows计算机。


我有类似的问题-但对我来说,这是INSTALL_PARSE_FAILED_NOT_APK在运行Espresso测试时
adek111,19年

我也得到了INSTALL_PARSE_FAILED_NOT_APK
人员,

我也遇到同样的问题。
桑索什

14
哇,Google,您怎么能使其成为STABLE版本呢?
0101100101 '19

您是否检查了Android Studio中是否启用了“即时运行”?
Reaz Murshed

Answers:


99

打开“运行/调试配置”对话框(Windows:“运行”>“编辑配置”)

编辑您的应用程序>常规>安装选项>安装标志

添加安装标志-r -t

这个标志意味着 adb install -r -t apkpath

屏幕图片


2
adb install -r -t apkpath我猜这个标志的意思是。@ TaseerAhmad
胡晟昊

21
-r表示“替换现有应用程序”。-t表示“允许测试包”
duckbrain

1
这个人来自哪里,他如何看待这个解决方案?给他一块勋章!
0101100101 '19

4
不为我工作!:(请看看我的问题,它比你有点不同。stackoverflow.com/questions/57770464/...
阿尔萨兰·沙阿

3
如果是Windows版本,则设置为“运行”>“编辑配置”。
Beatrice Lin

17

您需要在首选项中禁用“使用libusb后端”->调试器 在此处输入图片说明


只有这个解决方案有所帮助
-Xubuntu

不能相信这行得通!Android Studio 3.5.1 Android Debug Bridge版本1.0.41版本29.0.5-5949299
Kebab Krabby

1
像魅力一样工作。这个问题好几个月,只有这个答案为我工作奋斗
srisindhu saride

1
我的天啊!这解决了一个大问题。苦苦挣扎了几个月,因为..哇!
Vivek

1
在OSx 10.15上为我修复了此问题!谢谢!
克里斯·詹金斯(Chris.Jenkins),

12

低于API 26(Android 8)的设备会在Android Studio中发生此问题。这是由替换(InstantRun现在称为ApplyChanges)引起的。

似乎只有两种方法可以在下一次更新中对其进行修复。

  1. 继续API>=26
  2. 每次更改代码后,编辑从run configuration更改为,反之亦然。如果我正确理解,这将正确地重建应用程序和解决方法错误。deployAPKApp bundle

当然,有一个选项可以在从AndroidStudio运行应用程序之前从设备手动删除应用程序。


1
我有一个Android 9.0设备,并且有此问题。但是,当我在模拟器和真实设备之间混合运行测试时,应用程序和测试似乎经常运行。我真的不知道为什么,但是也许会帮助别人。
adek111

也许您可以API26+单击Apply changes而不是来成功重新运行应用程序rerun?这是右侧的新按钮rerun
mohax

6

对我来说,卸载应用程序或清理项目都可以“解决”问题。为了减少挫败感,我添加了干净的作业来调试构建类型,如下所示:

buildTypes {
    ...
    debug {
        clean
    }
    ...
}

4

阅读有关“应用更改”发行说明之后,我终于在这里找到了解决方案:https : //developer.android.com/studio/run#apply-changes-run-fallback

为应用更改启用运行后备

单击“应用更改并重新启动活动”或“应用代码更改”后,Android Studio会构建一个新的APK并确定是否可以应用更改。如果更改无法应用,并且会导致“应用更改”失败,Android Studio会提示您再次运行“运行”图标。但是,如果您不想每次都出现提示,可以将Android Studio配置为在无法应用更改时自动重新运行您的应用程序。

若要启用此行为,请按照下列步骤操作:

  1. 打开设置或首选项对话框:
    • 在Windows或Linux上,从菜单栏中选择“文件”>“设置”
    • 在macOS上,从菜单栏中选择Android Studio>首选项
  2. 导航到Build,Execution,Deployment> Deployment
  3. 选中复选框以为“应用更改”操作之一启用自动运行回退。
  4. 单击确定。

在Linux上运行的屏幕截图


1
我已将操作系统更改为Linux,并且AS 3.5在那里可以正常工作。
Taseer

4

如Google小组在https://issuetracker.google.com/issues/139782879中所述,Lineage OS存在问题:

我们能够在使用LineageOS的设备上重现它。它不完全支持我们用于DeltaInstall的系统调用。

没有明显的解决方案(除了从构建文件夹中删除APK或卸载应用程序之外)。

我们应该对此有一个解决方法,但就目前而言,LineageOS将没有DeltaInstall,并且始终需要执行较慢的完整安装。

Nothing如OP所指出更改为不会将APK部署到设备上(这就是为什么不会显示错误的原因),因此无法解决问题。

编辑:

此问题已在Android Studio 3.6中修复。

感谢您的反馈。这应该在最新版本的3.6中修复。


4

构建>清理项目对我来说是工作。在更改其他设置之前,请先尝试此操作。

快乐的编码:)


3

我在代码编辑运行配置中找到了解决方案,该配置在“部署”中进行了更改,选择“默认APK”并安装标志= -r -t,然后“申请”运行。该应用程序将在所有设备和模拟器中运行。我在OPPO 1 plus,Samsung Tab,Emulator Also中最受测试

请 以Android Studio中的“运行附近的编辑运行”配置按钮为准

编辑应用程序>常规==>安装选项==>安装标志

添加安装标志-r -t

-r表示“替换现有应用程序”。-t表示“允许测试包”

在此处输入图片说明


2

升级到3.5后,我也遇到同样的问题。我想知道您是否有运气让“运行”与连接的设备一起使用?

更新:我要通过在“运行/调试配置”对话框的“安装选项”下设置“来自应用程序捆绑包的APK”来使其工作



1

使用以下配置安装/运行apk之前,添加“ clean ” gradle任务依赖项。

project.afterEvaluate {
    android.applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def capitalizedVariant = variant.name.capitalize()
            def assembleVariantTask = project.tasks."assemble${capitalizedVariant}"
            assembleVariantTask.dependsOn clean
        }
    }
}

以上代码复制并粘贴到您的app/build.gradle文件中,这适用于所有构建变体。

具体来说,如果您只有调试和发布构建类型,则上面的代码将等同于下面的代码:

assembleDebug.dependsOn clean
assembleRelease.dependsOn clean


1

当我在真正的小米pocophone 1上运行应用程序并通过首先在模拟器上运行该应用程序,然后在我的小米pocophone 1上运行该应用程序来解决此问题时,我也遇到了此错误


1
splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a','x86_64'
        universalApk true
    }
}

由于'armeabi','x86','armeabi-v7a','x86_64'和'arm64-v8a'等不同的构造,我们必须将上述配置添加到build.gradle文件中。


0

最后,我找到了解决方案

只需将v2SigningEnabled设置为true

 signingConfigs {
    release {
        v2SigningEnabled true
    }
}

0

我自己没有面对这个问题。但是,以前我们在Android Studio的即时运行方面遇到了一些问题。我建议您在Android Studio中检查以下设置,然后取消选中设置以检查您的代码是否可以正常工作。

转到Android Studio -> Preference,然后取消选中下方的Deployments

在此处输入图片说明

这是Android Studio 3.5中与此相关的新功能,可帮助您更好地理解该功能。

在此处输入图片说明



0

我从模拟器上卸载了该应用程序,然后运行,一切恢复正常


0

对我来说minSdkVer = 22, tarSdkVer = 28Gradle -> app -> Tasks -> build -> clean && cleanBuildCache行动起来,问题就解决了。


0

我按下了锤子图标以重建应用程序,然后将其安装。所以我不知道吗?整个android hack工作平台糟透了。

Google所花的钱还无法聘请或找到足够好的程序员来提出自己的真实操作系统。


0

我也遇到了同样的问题,我遵循以下步骤1)清理项目2)重建项目

这解决了我的问题


0

就我而言,我无法解决以上所有问题,因此我找到了另一种方法。最后,我找到了解决方案。只要找到正确的电话驱动程序。我的开发电话是Samsung Galaxy Note 2(型号:GT-N7105 / Android 4.1.2)。我只是分享我的解决方案。希望节省您的时间。


0

当您测试新模块时,会发生此问题。首先,您分别编写它,然后将其添加到主应用程序中。当您将其添加到主应用程序时,请从手机中删除“ test_app”。



0

就我而言,它只能通过禁用APK签名验证来起作用:

$ adb shell settings put global verifier_verify_adb_installs 0

并使用上述-r -t标志


0

当我得到新的真实设备并尝试从android studio 3.5安装apk时,它的bug仍然存在于我的mac os上-我发现它的修复方式很丑-在studio中打开终端,然后执行以下操作:

cd app/build/outputs/apk/debug
adb install -r -t your_app_name.apk

它需要与每个项目和每个设备关联!

编辑:

我最终安装

Android Studio 3.6金丝雀

  • 比3.5更有效的版本

但是stiil需要添加到安装标志中 -r -t


我们必须等待“稳定”的3.6版本。
Taseer

0

几分钟前,当我尝试在真实设备上运行我的应用程序并在完成之前停止gradle构建时,遇到了这个问题。我刚才要做的是卸载设备上的应用程序,然后在AVD和真实设备上同时运行该应用程序,并且运行正常。希望这也对你有用


0

主要解决方案

  1. 文件->设置->构建,执行,部署->调试器>禁用Use libusb backend

  2. Gradle(IDE右侧的翻盖)-> android-> app->任务->安装-> uninstallAll,或者您也可以通过控制台通过以下方式进行:

    $ ./gradlew uninstallAll



其他提示:

  • 在“运行/调试配置”中再次删除并创建应用

    • 安装选项->检查所有用户的安装
  • 运行/调试配置->启动选项>启动:指定活动>选择活动

  • 使用其他物理设备,IDE或PC版本安装应用程序

  • 重新安装IDE并删除.android

  • 重试主要解决方案


如果要安装并打开应用程序,则可以通过以下命令使用adb:

$ adb install -r -t absolute-path.apk

$ adb shell am start -n "com.package.flavor.env/.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER

GL

资源


-1

尝试将android:appComponentFactory=""更改为android:appComponentFactory="new""new"可以是任何单词


-2

最后,在安装选项DEPLOY->中从选择第4个选项->(Nothing)选项-> Apply中更改代码编辑运行配置中得到了解决方案,该应用程序可在android studio 3.5中正常运行。在手机和模拟器中也是如此。这也可以在android版本9中正常工作。这是一个永久解决方案。

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.