📅  最后修改于: 2023-12-03 15:40:46.949000             🧑  作者: Mango
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
时非常小心,并尽可能地使用权限来保护应用程序的组件。