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

清单合并失败:android:导出需要为显式指定。在Jetpack Compose项目中[重复]

白迪
2023-03-14

我在一个Jetpack Compose项目中遇到了这个错误。清单合并失败:android:exported需要为显式指定。当相应的组件定义了意图过滤器时,针对Android 12和更高版本的应用需要为< code>android:exported指定一个显式值。详情请见https://developer . Android . com/guide/topics/manifest/activity-element # exported

当我添加这个依赖项<code>implementation‘com.shakebugs:shake:14.4.0‘时,一切都开始了https://www.shakebugs.com/docs/android/setup

这是我的清单文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.uticodes.compose_otp_input_field">

    <application
        android:name=".App"
        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.Compose_otp_input_field">
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:label="@string/app_name"
            android:theme="@style/Theme.Compose_otp_input_field.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest> ```

App class
```class App : Application() {

    override fun onCreate() {
        super.onCreate()
        Shake.getReportConfiguration().isInvokeShakeOnShakeDeviceEvent = true
        Shake.start(this, "clientId", "clientScret")
    }
} ```

My compileSdk ```compileSdk 31 ``` , ```minSdk 21``` , ``` kotlinCompilerVersion '1.5.21'``` , ```compose_version = '1.0.1' ``` , ```gradle:7.0.1 ```

共有1个答案

湛宝
2023-03-14

当您以API级别31为目标时,所有带有意图过滤器、服务、接收者、提供者的活动都必须明确指定它们是否在AndroidManifest.xml中导出

android:exported="true"

此外,由于您的某些依赖项(第三方库)没有设置此属性,也可能会发生此问题。为了解决这个问题,您应该覆盖它们的< code>exported属性:

<activity android:name="name_of_the_activity_inside_library">
    android:exported="false|true"
    tools:node="merge" />

一旦您使用的库添加了导出的属性,您将能够删除它。

注意:面向 Android 12 时,清单合并任务在没有生成清单的情况下失败,并且您无法找到导致问题的原因,因此我的建议是使用 targetSdk 30 编译应用程序,并在生成的清单中查找哪些组件存在此问题。

 类似资料:
  • 我在一个Jetpack Compose项目中遇到了这个错误。清单合并失败:需要为显式指定android:exported。当相应组件定义了意图过滤器时,针对Android 12及更高版本的应用程序需要为指定一个显式值。看见https://developer.android.com/guide/topics/manifest/activity-element#exported详情 这一切都始于我添加

  • 清单文件有问题,错误消息: 清单合并失败:android:导出需要明确指定。针对Android 12及更高版本的应用程序需要指定一个显式值为时,相应的组件定义了一个意图过滤器。详见https://developer.android.com/guide/topics/manifest/activity-element#exported。 我的Android清单: 这篇文章描述了一个解决方案,但它不起

  • 合并错误:错误:需要为元素显式指定android:exported 我甚至不知道该怎么办。我为这个错误挣扎了整整一周,但我不能。 这是我的sdk版本 在所有、和上编写了。啊,我没有这个错误中提到的

  • 这是我的毕业生: 这是我的Android清单:

  • 我已经检查了清单中的所有活动。xml文件中,所有活动都存在android:exported=“true”,但它始终显示此错误**清单合并失败:需要为元素显式指定android:exported 我的清单文件是 Gradle构建 等待早期响应

  • 当我从升级到时,我收到了这个错误。 错误 清单合并失败:android:导出需要显式指定。当相应组件定义了意图过滤器时,面向Android 12及更高版本的应用需要为指定显式值。有关详细信息,请参阅https://developer.android.com/guide/topics/manifest/activity-element#exported。