INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 错误

INSTALL_PARSE_FAILED_MANIFEST_MALFORMED error

美好的一天,

安装 Android Studio Bumblebee 2021.1.1 补丁 3 并导入我的旧项目(然后更新 gradle、sdk 和依赖项)后,我开始与 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 错误作斗争。 我遵循了 Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED? 中的建议,但运气不佳。

我检查的内容:

  1. 包名是小写的
  2. 导出的字段已明确定义

我认为导致此错误的最后一项是 Logcat:无法获取包用户 ID:运行-as:未知包:com.test.app

我该如何解决这个问题?

清单:

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

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

        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher_round_foreground"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round_foreground"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity
                android:name=".MainActivity"
                android:exported="true"
                android:label="@string/app_name"
                android:theme="@style/AppTheme.NoActionBar">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                    <action android:name="android.intent.action.VIEW" />
                </intent-filter>
            </activity>
                android:theme="@style/Theme.AppCompat.NoActionBar" />
        </application>

    </manifest>

Run Error: 

    Installation failed due to: 'Failed to commit install session 1816080056 with command cmd package install-commit 1816080056. Error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/app/vmdl1816080056.tmp/base.apk (at Binary XML file line #137): leakcanary.internal.activity.LeakLauncherActivity: Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present'

Logcat:

2022-04-09 13:22:23.974 14319-14319/? E/studio.deploy: Could not get package user id: run-as: unknown package: com.test.app
2022-04-09 13:22:23.991 14319-14319/? E/studio.deploy: Could not find apks for this package: com.test.app
2022-04-09 13:22:23.991 14319-14319/? E/studio.deploy: Error: 
2022-04-09 13:22:24.008 14319-14319/? E/studio.deploy: Could not get package user id: run-as: unknown package: com.test.app
2022-04-09 13:22:24.019 14319-14319/? E/studio.deploy: Could not find apks for this package: com.test.app
2022-04-09 13:22:24.019 14319-14319/? E/studio.deploy: Error: 
2022-04-09 13:22:24.551 13743-13743/? E/Finsky: [2] VerifyPerSourceInstallationConsentInstallTask.d(2): Package name null is not an installed package
2022-04-09 13:22:24.591 438-452/? E/installd: Couldn't opendir /data/app/vmdl1816080056.tmp: No such file or directory
2022-04-09 13:22:24.591 438-452/? E/installd: Failed to delete /data/app/vmdl1816080056.tmp: No such file or directory
2022-04-09 13:23:08.160 362-362/? E/android.hardware.power.stats@1.0-service-mock: Failed to getEnergyData
2022-04-09 13:23:33.837 8380-9661/? E/WakeLock: GCM_HB_ALARM release without a matched acquire!
2022-04-09 13:23:33.843 8380-9661/? E/WakeLock: GCM_HB_ALARM release without a matched acquire!
2022-04-09 13:25:08.160 362-362/? E/android.hardware.power.stats@1.0-service-mock: Failed to getEnergyData

与错误中的错误描述一样,是关于LeakLauncherActivity的

leakcanary.internal.activity.LeakLauncherActivity: Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present

看起来这个问题已经在新版本的 leak canary lib 中得到修复。 https://github.com/square/leakcanary/issues/2076