📜  清单合并失败:针对 Android 12 及更高版本的应用需要为 `android:exported` 指定显式值 (1)

📅  最后修改于: 2023-12-03 15:40:46.949000             🧑  作者: Mango

清单合并失败:针对 Android 12 及更高版本的应用需要为 android:exported 指定显式值

问题描述

在开发 Android 应用时,当在 Android 12 或者更高的版本上运行应用时,可能会遇到如下提示:

Merging Errors: Error: For apps targeting Android 12 and higher, "android:exported" needs to be specified explicitely.`

这是由于 Android 12 开始强制要求应用程序通过显式指定android:exported的值来保护其组件的导出。

解决方法

如果应用程序的 AndroidManifest.xml 文件中有暴露的组件,如 Activity、Service 等,则需要为其指定 android:exported 的值。

下面是一个示例代码段:

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

可以看出,在示例中将 android:exported 的值指定为 true。这将允许该组件被其他应用或系统调用。

如果不希望组件被其他应用或系统调用,则应该指定 android:exported 的值为 false

同时,需要注意的是,为了避免发生这种情况,开发人员应该尽可能地减少使用 android:exported,并尽可能地使用权限保护应用程序的组件。

总结

在 Android 12 及更高版本的应用程序中,为了保护应用程序的组件,需要显式指定 android:exported 的值。开发人员应该在使用 android:exported 时非常小心,并尽可能地使用权限来保护应用程序的组件。