Android How can i override exported tag in manifest?(Android如何在清单中覆盖导出的标签?)
问题描述
我想将目标SDK从30升级到31。但我收到了这个错误:
清单合并失败:Android:需要显式导出
指定用于。面向Android 12和更高版本的应用程序有
需要为android:exported
指定显式值
相应的组件定义了意图过滤器。看见
https://developer.android.com/guide/topics/manifest/activity-element#exported
了解详细信息。
当我在明显的合并中环顾四周时。我看到我在应用中使用的一个第三方库没有添加android:exported
标签。
<service android:name="com.****.MessagingService" >
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
所以这是我的问题。如何将此服务重写为EXPORT FALSE,如下所示?
<service android:exported="false"
android:name="com.****.MessagingService" >
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
推荐答案
Android Studio将合并您的项目及其依赖项的所有清单文件。
较高级别的清单始终可以优先并覆盖依赖项中的值。选中此paragraph in the documentation。
由于依赖项根本不指定exported
值,因此您可以覆盖顶级清单文件中的每个服务,如下所示:
<service android:exported="false"
android:name="com.****.MessagingService" />
这将合并com.****.MessagingService
的服务标签值,并应用导出的值。
这篇关于Android如何在清单中覆盖导出的标签?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!