当前位置: 首页 > 知识库问答 >
问题:

针对Android 12的清单合并失败[重复]

蒋高扬
2023-03-14

使用Android Studio 4.2.1,在我的build.gradle文件中将sdk目标更改为Android 12后,我收到一个清单合并失败,有多个错误,请参阅日志错误。

合并清单选项卡中显示的错误如下:

Merging Errors: 
Error: 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. My_App.app main manifest (this file) 
Error: 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. My_App.app main manifest (this file) 
Error: 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. My_App.app main manifest (this file) 

然而,android:exported标记已应用于我的AndroidManifest。xml文件。我只有一个活动。没有服务或广播接收器。见下文:


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

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.VIBRATE" />

    <application
        android:name="com.mydomain.myapp.MyApplication"
        android:allowBackup="false"
        tools:replace="allowBackup"
        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.mydomain.myapp.ui.MainActivity"
            android:exported="true">
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="preloaded_fonts"
            android:resource="@array/preloaded_fonts" />
    </application>

</manifest>

我的身材。渐变(:app)文件:

android {
    compileSdkVersion("android-S")
    buildToolsVersion "30.0.3"

    defaultConfig {
        ...
        minSdkVersion 23
        targetSdkVersion("S")
        ...
}

知道我该如何解决这个问题吗?

共有3个答案

周苑博
2023-03-14

如果您将android studio升级到Bumblebee 2021.1.1。需要进行以下更改:步骤1:您的targetSdkVersion必须为30或更高步骤2:将您的appcompatlibrary更新为implementation'androidx.appcompat:appcompat:1.4.1'

步骤3:在AndroidManifest文件中,将< code > Android:exported = true 添加到您的活动启动器中。

靳富
2023-03-14

如果您的应用程序针对Android 12或更高版本,并且包含使用意图过滤器的活动、服务或广播接收器,则必须显式声明这些应用程序组件的Android:exported属性。为了解决这个问题,我们需要遵循以下步骤:

    < li >我们需要在主文件夹中找到AndroidManifest.xml。

人造人

我们必须添加android: export="并在这些引号内设置一个布尔值。现在您可能会问,我什么时候需要将android: export="true"android: export="false"添加到使用意图过滤器的活动、服务或广播接收器中。如果应用程序组件包含LAUNCHER类别,则将android: export设置为true。在大多数其他情况下,将android: export设置为false。

这是AndroidManifest.xml中的一个示例

<service android:name="com.example.app.backgroundService"
         android:exported="false">
    <intent-filter>
        <action android:name="com.example.app.START_BACKGROUND" />
    </intent-filter>
</service>

吴丁雷
2023-03-14

该问题是由3个活动在androidx中缺少android:exported属性引起的。测试:核心libraryversion1.3.0。升级到版本1.4.0-beta01修复了此问题。

如果您在针对Android 12后出现错误,最简单的调试方法是:

  • 降级到以前的sdk版本
  • 重建项目
  • 构建成功后,打开项目的AndroidManifest.xml
  • 在窗口底部,单击Merged Manifest选项卡
  • 查找任何

如果您想确保这些活动是问题所在,请将它们直接添加到项目的AndroidManifest中。添加了缺少android:exported属性的xmlfile,然后尝试重新构建项目。

所以如果

<activity 
 android:name="com.domain.ProblemActivity"
 android:exported="true" >

重建针对Android 12,如果它有效,那么你发现了错误!

感谢@MikePenz给我指明了正确的方向。

 类似资料:
  • 错误:任务“:app:ProcessDebugManifest”执行失败。 清单合并失败:来自AndroidManifest.xml:13:9-42的属性application@icon value=(@mipmap/appiconnew)也存在于[com.pnikosis:materialish-progress:1.0]AndroidManifest.xml:13:9-45 value=(@d

  • 错误:清单合并失败:属性application@appcomponentFactory value=(Android.support.v4.app.coreComponentFactory)来自[com.android.support:support-compat:28.0.0]AndroidMANIFEST.xml:22:18-91也存在于[AndroidX.core:core:1.0.0]An

  • 我似乎得到了这样的错误:

  • 我已将模拟器版本和 Android SDK 版本更新为 Android S (Android 12)。更新后,我无法运行该项目。我不能运行一个你好,世界!项目(空项目),但我可以构建Gradle以及,但我不能运行该项目。我总是得到错误: 清单合并失败:当相应的组件定义了意图过滤器时,针对Android 12和更高版本的应用程序需要为< code>android: exported指定一个显式值。详

  • 问题内容: 我正在将当前项目的大型应用程序移至Android Studio和Gradle中。我目前陷入以下问题: 我尝试将以下属性添加到主文件: 这些属性定义都不起作用。我究竟做错了什么? 问题答案: 试试看: 将此添加到 将此添加到 基于此,它应该覆盖所有元素。“将低优先级声明替换为带注释的声明。”

  • 清单合并失败:属性Application@AppComponentFactory value=(android.support.v4.app.CoreComponentFactory)来自[com.android.support:support-compat:28.0.0]AndroidManifest.xml:22:18-91 也存在于[androidx.core:core:1.0.0]andr