5

我已添加android:exported="true"到清单中的唯一活动,但在将编译 sdk 和目标 sdk 版本更新为 31 后仍然出现错误。我还尝试重建项目,使缓存无效并重新启动,但这没有帮助

错误- Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

AndroidManifest 文件

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

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

    <application
        android:name=".framework.presentation.BaseApplication"
        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">
        <activity android:name="com.xyz.presentation.MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

合并清单错误

appcompat-resources:1.3.1 manifest, runtime-livedata:1.0.0 manifest, runtime-saveable:1.0.1 manifest, firebase-measurement-connector:19.0.0 manifest, vectordrawable-animated:1.1.0 manifest, main nav_graph。 xml 导航文件合并错误:错误:需要为 . 面向 Android 12 及更高版本的应用需要为android:exported当相应的组件定义了意图过滤器时。有关详细信息,请参阅 https://developer.android.com/guide/topics/manifest/activity-element#exported。Dairy.app 主清单(此文件)错误:需要为 . 面向 Android 12 及更高版本的应用需要为android:exported相应组件定义了 Intent 过滤器时指定显式值。有关详细信息,请参阅 https://developer.android.com/guide/topics/manifest/activity-element#exported。Dairy.app 主清单(此文件)错误:需要为 . 面向 Android 12 及更高版本的应用需要为android:exported当相应的组件定义了意图过滤器时。有关详细信息,请参阅 https://developer.android.com/guide/topics/manifest/activity-element#exported。Dairy.app 主清单(此文件)

4

8 回答 8

9

androidx.test:core库版本 1.3.0。升级到 1.4.0 版解决了这个问题。

于 2021-10-26T18:10:23.327 回答
7

要解决目标 sdk 31 中的此错误-

1.首先将目标sdk设置为30

2.然后去合并的清单

3.查找是否有任何未设置的活动、服务、接收者或提供者。android:exported覆盖所有这些条目并将其设置android:exported为真或假。

4.将目标sdk设置回31并运行项目

于 2021-10-10T07:00:43.743 回答
1

构建失败后,转到AndroidManifest.xml并在底部单击合并清单,查看哪些活动具有意图过滤器但没有exported=true属性。或者您可以只获取给出错误的活动。

将这些活动添加到您的应用程序清单中,android:exported="true"并且应用程序tools:node="merge"这会将导出的属性添加到给出错误的活动中。

例子:

      <activity
            android:name="<activity which is giving error>"
            android:exported="true"
            tools:node="merge" />

您必须这样做一次,一旦库开发人员更新他们的库,您就可以将其删除。

于 2021-10-05T10:38:37.053 回答
1

我遇到了这个问题,我android:exported="true"也添加tools:node="merge"了,AndroidManifest.xml但是出现了这个错误。我发现这与我的项目的 Activates 无关,而与一些依赖项有关,如下所示:

implementation 'com.najva.sdk:najva-android-sdk:1.3.3'

所以检查你的项目依赖关系,你肯定会找到它。

于 2021-10-17T14:33:58.733 回答
1

以下情况app/build.gradle可能是原因。

dependencies {
    debugImplementation androidx.fragment:fragment-testing:<1.4.0-alpha02 or lower>’
}
解决方案 1

更新fragment-testing1.4.0-alpha03或更高。

解决方案 2

将以下内容添加到AndroidManifest.xml.

<manifest>
    <application>
        <activity
            android:name="androidx.test.core.app.InstrumentationActivityInvoker$BootstrapActivity"
            android:exported="false" />
        <activity
            android:name="androidx.test.core.app.InstrumentationActivityInvoker$EmptyActivity"
            android:exported="false" />
        <activity
            android:name="androidx.test.core.app.InstrumentationActivityInvoker$EmptyFloatingActivity"
            android:exported="false" />
    </application>
</manifest>
于 2021-10-20T17:34:09.053 回答
1

如果您使用的是颤振,升级flutter_local_notifications到最新版本(现在是 9.3.2)为我解决了这个错误。

于 2022-02-16T00:15:43.933 回答
0

此问题源于项目的依赖关系。右键单击intent-filter并选择查找用法选项。现在,在所有使用场所检查是否导出分配的值或非。如果没有,请分配一个值(即使在库的缓存文件夹中)。这将解决问题,直到缓存刷新,但您已经确定了创建此问题的库。

于 2021-12-05T22:18:39.387 回答
0

如果您使用 ogury 广告,请将其放入您的 AndroidManifest 文件中

 <activity
        android:name="io.presage.mraid.browser.ShortcutActivity"
        android:theme="@style/Presage.AdScreen"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>
于 2021-12-23T11:14:45.460 回答