清单合并失败:即使我的 AndroidManifest.xml 文件中没有服务,也需要为 <service> 显式指定 android:exported

Posted

技术标签:

【中文标题】清单合并失败:即使我的 AndroidManifest.xml 文件中没有服务,也需要为 <service> 显式指定 android:exported【英文标题】:Manifest merger failed : android:exported needs to be explicitly specified for <service> even if there were no services in my AndroidManifest.xml file 【发布时间】:2021-11-03 03:09:19 【问题描述】:

清单合并失败:需要明确指定 android:exported 。当相应组件定义了 Intent 过滤器时,面向 Android 12 及更高版本的应用需要为 android:exported 指定显式值。详情请见https://developer.android.com/guide/topics/manifest/activity-element#exported。

我的应用程序的AndroidManifest.xml 文件中没有&lt;services,我还查找了每个AndroidManifest.xml 文件,它们也没有任何&lt;service 元素,那么为什么会出现此错误?

我的合并清单选项卡中没有错误,但是,第一个清单有两个 &lt;receiver,我已经在其中手动添加了 android:exported 属性。

【问题讨论】:

也许您正在使用具有服务的库。你检查你的合并清单了吗?在 Android Studio 的清单编辑器中有一个子选项卡。 【参考方案1】:

app -> src -> main -> AndroidManifest.xml 需要在&lt;Activity&gt; 下的每个&lt;Activity&gt; 中显式添加android:exported="true" 的标签

<application
    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/Theme.Eynetic">
    <activity android:name=".Splash_Screen"
        android:theme="@style/SplashTheme"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".MainActivity"
        android:theme="@style/MainTheme"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

查看代码中的活动标签...

<activity android:name=".Splash_Screen"
        android:theme="@style/SplashTheme"
        android:exported="true">

目前我正在对每个活动执行此操作,因为这是 Android Studio 给出的错误,但也许有更好的方法在代码中的某处仅添加一次。

【讨论】:

【参考方案2】:

尝试在您自己的清单文件中添加android:exported = false pr android:exported = true 并编译代码。我希望这能解决你的问题。因为在通知中手动添加是行不通的。

【讨论】:

在哪里添加? 把它放在你在清单文件中声明的 MainActivity 标签下面 我的MainActivity 已经设置了这个属性。我认为您没有仔细阅读问题。 如果这不起作用,请尝试将 Target SDK 设置为 30。编译并重建项目。 添加清单屏幕截图如何理解清单中的内容。

以上是关于清单合并失败:即使我的 AndroidManifest.xml 文件中没有服务,也需要为 <service> 显式指定 android:exported的主要内容,如果未能解决你的问题,请参考以下文章

清单合并失败:属性 application@appComponentFactory 无法解决此问题

清单合并失败:uses-sdk:minSdkVersion 14

清单合并失败并出现多个错误:Android Studio Java

导入 Facebook sdk 后,清单合并失败并出现多个错误

清单合并失败:针对 Android 12 的应用程序 - Android Studio 错误 [重复]

清单合并失败,使用工具:overrideLibrary