【问题标题】:Installation failed due to: 'null' - Android Studio 3.5安装失败,原因是:'null' - Android Studio 3.5
【发布时间】:2019-12-26 14:12:53
【问题描述】:

自从我遇到 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 机器。

【问题讨论】:

  • 我有类似的问题 - 但对我来说,在运行 Espresso 测试时是 INSTALL_PARSE_FAILED_NOT_APK
  • 我也收到了INSTALL_PARSE_FAILED_NOT_APK
  • 我也遇到了同样的问题。
  • 哇 Google,你怎么能把它做成 STABLE 版本?!
  • 您是否检查过您的 Android Studio 中是否启用了 Instant Run?

标签: android android-studio


【解决方案1】:

如果您的应用面向 Android 12 或更高版本,您必须在应用的清单文件中声明这些归因标签。如果应用组件包含 LAUNCHER 类别,请将 android:exported 设置为 true。

 <activity
    android:name="com.test.activity.SplashActivity"
    android:clearTaskOnLaunch="true"
    android:label="@string/app_name"
    android:launchMode="singleTop"
    android:noHistory="true"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme.NoActionBar"
    android:exported="true">

还要检查 Androidmanifest 中的接收器或服务,如果您使用任何接收器或服务集 android:exported="true" 或根据要求设置为 false。

<receiver
    android:name="com.test.receiver.ShareReceiver"
    android:exported="true">
    <intent-filter>
        <action android:name="com.test.fcm.android.action.broadcast" />
    </intent-filter>
</receiver>

 <service
    android:name="com.google.android.gms.tagmanager.InstallReferrerService"
    android:exported="true" />

同时更新你所有的 gradle 依赖。 我已根据要求更新了以下依赖项。

testImplementation 'junit:junit:4.13.2' 
androidTestImplementation 'androidx.test:runner:1.4.0'


androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation 'com.razorpay:checkout:1.6.15'

希望对你也有帮助。

【讨论】:

    【解决方案2】:

    我得到这个是因为设备被锁定并且需要用户接受权限才能安装它。 (华为鸿蒙操作系统)

    解锁手机以准备安装过程解决了这个问题。

    【讨论】:

      【解决方案3】:

      对我来说,我不小心添加了新的 BlankActivity,它继承自 Wearable Activity。然后我删除了活动代码和布局文件。但是我忘记删除 AppManifest.xml 文件中的可穿戴相关标签。这是像我这样的人的主要问题。

      【讨论】:

        【解决方案4】:

        对我来说,当我创建一个新的空白活动并且 Android 工作室出于某种原因创建了一个可穿戴活动时,问题就开始了。一旦我从清单中删除了对可穿戴活动的所有提及并删除了课程,一切都恢复了正常。

        【讨论】:

          【解决方案5】:

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

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

          添加安装标志-r -t

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

          【讨论】:

          • 这个标志意味着adb install -r -t apkpath,我猜。@TaseerAhmad
          • -r 表示“替换现有应用程序”。 -t 表示“允许测试包”
          • 这个人是从哪里来的,他是怎么想到这个解决方案的?给他一枚勋章!
          • 不适合我! :( 请看我的问题。它和你的有点不同。stackoverflow.com/questions/57770464/…
          • 设置是运行 > 编辑配置,如果是 windows 版本。
          【解决方案6】:

          1-clean 项目来自 Build -> CleanProject

          2-从 ProjectPath/app/build/outputs

          中删除文件夹 outputs

          3-然后构建 gradle 并运行应用程序

          【讨论】:

            【解决方案7】:

            主要解决方案

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

            2. Gradle(在 IDE 右侧翻动)-> android -> app -> Tasks -> install -> 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

            Source

            【讨论】:

              【解决方案8】:

              几分钟前,当我尝试在真实设备上运行我的应用程序并在完成之前停止 gradle 构建时,我遇到了这个问题。我刚刚做的是在设备上卸载应用程序并在 AVD 和真实设备上重新运行应用程序(同时)并且它工作。希望这对你也有用

              【讨论】:

                【解决方案9】:

                当我获得新的真实设备并尝试从 android studio 3.5 安装 apk 时,我的 mac 操作系统上仍然存在该错误 - 我发现它的修复方式很丑 - 在工作室中打开终端并遵循:

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

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

                已编辑:

                我最终安装了

                Android Studio 3.6 金丝雀

                • 它比 3.5 更有效

                但仍然需要添加到 安装标志 -r -t

                【讨论】:

                • 我们必须等待“稳定”的 3.6 版本。
                【解决方案10】:

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

                $ adb shell settings put global verifier_verify_adb_installs 0
                

                并使用上面提到的-r -t 标志

                【讨论】:

                  【解决方案11】:

                  Build > Clean project 它的工作是为我工作的。在更改其他设置之前先试试这个。

                  编码愉快:)

                  【讨论】:

                    【解决方案12】:

                    gradle.properties -> android.enableAapt2=false

                    【讨论】:

                    • 请勿使用! Aapt 已被弃用,取而代之的是 aapt2,最终将被删除。此解决方法将停止工作,并在删除 aapt 时导致其他问题
                    【解决方案13】:

                    运行 -> 编辑配置 -> 安装标志:-r -t -> 应用 -> 确定

                    【讨论】:

                      【解决方案14】:

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

                      【讨论】:

                        【解决方案15】:

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

                        【讨论】:

                          【解决方案16】:

                          我也遇到了同样的问题,我按照以下步骤操作 1) 清洁项目 2)重建项目

                          这解决了我的问题

                          【讨论】:

                            【解决方案17】:

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

                            这么多钱,谷歌却无法雇佣或找到足够优秀的程序员来开发自己的真正操作系统。

                            【讨论】:

                              【解决方案18】:

                              对我来说minSdkVer = 22, tarSdkVer = 28,运行Gradle -&gt; app -&gt; Tasks -&gt; build -&gt; clean &amp;&amp; cleanBuildCache 操作,问题解决了。

                              【讨论】:

                                【解决方案19】:

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

                                【讨论】:

                                  【解决方案20】:

                                  Google 团队在https://issuetracker.google.com/issues/139782879 中指出,Lineage OS 存在问题:

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

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

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

                                  正如OP指出的那样更改为Nothing不会将APK部署到设备(这就是不会显示错误的原因),所以它不会解决问题。

                                  编辑:

                                  这已在 Android Studio 3.6 中修复。

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

                                  【讨论】:

                                    【解决方案21】:
                                    splits {
                                        abi {
                                            enable true
                                            reset()
                                            include 'x86', 'armeabi-v7a','x86_64'
                                            universalApk true
                                        }
                                    }
                                    

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

                                    【讨论】:

                                      【解决方案22】:

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

                                      【讨论】:

                                        【解决方案23】:

                                        您需要在首选项中禁用“使用 libusb 后端”--> 调试器

                                        【讨论】:

                                        • 只有这个解决方案有帮助 - Xubuntu 18.04
                                        • 不敢相信这有效! Android Studio 3.5.1 Android Debug Bridge 版本 1.0.41 版本 29.0.5-5949299
                                        • 像魅力一样工作。为这个问题苦苦挣扎了几个月,只有这个答案对我有用
                                        • 天啊!这解决了一个很大的问题。为这个问题苦苦挣扎了几个月。哇!
                                        • 在 OSx 10.15 上为我修复了这个问题!谢谢!
                                        【解决方案24】:

                                        我在 Deploy 中的代码编辑运行配置更改中得到了解决方案,选择 Default APK 和 install flag =-r -t 然后应用运行。该应用程序将在所有设备和模拟器中运行。 我在 OPPO 1 plus、Samsung Tab、Emulator Also 中进行了测试

                                        请考虑编辑运行配置 Android Studio 中靠近运行按钮

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

                                        添加安装标志 -r -t

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

                                        【讨论】:

                                          【解决方案25】:

                                          什么对我有用,可以删除旧应用程序,然后重新运行项目。在这种情况下,旧的签名证书不会打扰。

                                          【讨论】:

                                            【解决方案26】:

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

                                            更新:我将通过在“运行/调试配置”对话框中的安装选项下设置“应用程序包中的 APK”来实现此功能

                                            【讨论】:

                                              【解决方案27】:

                                              尝试运行命令“adb devices”,如果输出为空,则重新连接设备。这帮助我解决了同样的错误。 Android studio 3.5 无法确定设备已断开连接。

                                              【讨论】:

                                                【解决方案28】:

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

                                                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
                                                

                                                【讨论】:

                                                  【解决方案29】:

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

                                                  【讨论】:

                                                    【解决方案30】:

                                                    在阅读了Release Notes关于Apply Changes的内容后,我终于在这里找到了解决方案:https://developer.android.com/studio/run#apply-changes-run-fallback

                                                    为应用更改启用运行后备

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

                                                    要启用此行为,请按以下步骤操作:

                                                    1. 打开设置或首选项对话框:
                                                      • 在 Windows 或 Linux 上,从菜单栏中选择 文件 > 设置
                                                      • 在 macOS 上,从菜单栏中选择 Android Studio > 首选项
                                                    2. 导航到构建、执行、部署 > 部署
                                                    3. 选择 复选框 以启用自动运行回退 应用更改操作。
                                                    4. 点击确定。

                                                    【讨论】:

                                                    • 我已将操作系统更改为 Linux,AS 3.5 在那里运行良好。
                                                    猜你喜欢
                                                    • 2020-10-02
                                                    • 2020-01-06
                                                    • 2022-10-20
                                                    • 1970-01-01
                                                    • 2015-05-07
                                                    • 1970-01-01
                                                    • 1970-01-01
                                                    • 1970-01-01
                                                    • 2010-10-07
                                                    相关资源
                                                    最近更新 更多