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

Manifest合并失败,出现多个错误|需要Android 12及更高版本才能为“android:导出”指定显式值

邵沛
2023-03-14

我是爪哇和机器人的新手。在运行模拟器时,我面临着合并冲突问题。

完整的错误消息:

执行任务失败:process DefaultsDebugMainManifest。

清单合并失败,出现多个错误,请参阅日志

错误:需要为元素显式指定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.iab.omid.sampleapp">
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<application

    android:networkSecurityConfig="@xml/network_security_config"
    android:name=".AdApplication"
    android:allowBackup="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    tools:ignore="GoogleAppIndexingWarning">
    <activity
        android:name=".AdListActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar"
        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=".AdDetailActivity"
        android:label="@string/title_ad_detail"
        android:parentActivityName=".AdListActivity"
        android:theme="@style/AppTheme.NoActionBar">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.iab.omid.sampleapp.AdListActivity"/>
    </activity>
</application>

和构建渐变

buildscript {
    ext {
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    repositories {
        google()
        mavenCentral()
    } 
    dependencies {
        classpath 'com.android.tools.build:gradle:7.1.2'
    }
}

apply plugin: 'com.android.application'

repositories {
    google()
    maven {
        url "https://plugins.gradle.org/m2/"
    }
}

android {
    compileSdk 32
    flavorDimensions ""
    defaultConfig {
        applicationId "com.iab.omid.sampleapp"
        minSdkVersion 18
        targetSdkVersion 32
        versionCode 1020
        versionName "1.1.3"
        testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
        buildConfigField("String", "PARTNER_NAME", "\"com.iab.omid.sampleapp\"")
        buildConfigField("String", "VENDOR_KEY", "\"dummyVendor\"")
        buildConfigField("String", "VALIDATION_SCRIPT_URL", "\"complianceomsdk.iabtechlab.com\"")
        // This override URL will only change URLs seen in Charles proxy for Html ads
        buildConfigField("String", "VALIDATION_SCRIPT_URL_OVERRIDE", "\"complianceomsdk.iabtechlab.com\"")
        buildConfigField("String", "VERIFICATION_URL", "\"https://s3-us-west-2.amazonaws.com/omsdk-files/compliance-js/omid-validation-verification-script-v1.js\"")
        buildConfigField("String", "VERIFICATION_PARAMETERS", "\"http://omid-android-reference-app/sendMessage?msg=\"")
        buildConfigField("String", "HTML_DISPLAY_AD", "\"https://omsdk-files.s3-us-west-2.amazonaws.com/creatives/html_display_creative.html\"")
        buildConfigField("String", "HTML_VIDEO_AD", "\"https://omsdk-files.s3-us-west-2.amazonaws.com/creatives/html_video_creative.html\"")
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
        defaults {

        }

        instrumentationTest {
            buildConfigField("String", "VERIFICATION_URL", "\"https://omsdk-files.s3-us-west-2.amazonaws.com/fullstack/fullstack-verification-script.js\"")
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildToolsVersion '32.0.0'
}

dependencies {
    implementation fileTree(include: ['*.aar'], dir: '../')
    implementation 'com.google.android.exoplayer:exoplayer:2.10.5', {
        exclude group: 'com.android.support'
    }
    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'commons-io:commons-io:2.4'
    implementation 'io.reactivex:rxandroid:1.2.1'
    implementation 'io.reactivex:rxjava:1.3.8'
    implementation 'org.apache.commons:commons-lang3:3.6'
    implementation 'com.facebook.stetho:stetho:1.5.0'
    implementation 'com.facebook.stetho:stetho-okhttp3:1.5.0'
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
    releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    androidTestImplementation 'androidx.annotation:annotation:1.3.0'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test:rules:1.4.0'
    androidTestImplementation 'org.mockito:mockito-android:4.3.1'
    androidTestImplementation 'com.azimolabs.conditionwatcher:conditionwatcher:0.2'
    androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
}

tasks.withType(JavaCompile) {
    options.compilerArgs << "-Xlint:deprecation"
}

task downloadOMSDKJS(type:Exec) {
    if (!file('./src/main/res/raw/omsdk_v1.js').exists()) {
        workingDir '../'
        commandLine 'sh', './scripts/download-omsdk-js.sh'
    } else {
        // We need a dummy execCommand here.
        commandLine 'sh'
    }
}

preBuild.dependsOn downloadOMSDKJS

我已经尝试了StackOverflow上的许多其他解决方案,但仍然没有取得任何进展。

请在评论中告诉我是否需要分享更多细节来解决这个问题。

共有1个答案

澹台建华
2023-03-14

您的库可能正在对活动定义“intent_filter”

debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'

如果您的应用程序面向API 31,属性“exported”是必需的。

因此,由于该库的开发人员没有针对API 31,因此导出的标志对他来说不是强制性的。他构建它时没有导出属性。

所以你能做的,就是在你的清单上重新定义那个特定的类,来声明它是否被显式导出。例如:

<activity android:name="com.squareup.leakcanary.internal.DisplayLeakActivity"
         android:exported="true"/>
 类似资料:
  • 请帮我解决这个错误,在我的项目中,同时尝试通过android Studio在移动设备上运行。 清单合并失败:当相应的组件定义了意向过滤器时,面向 Android 12 及更高版本的应用需要为 指定一个显式值。有关详细信息,请参阅 https://developer.android.com/guide/topics/manifest/activity-element#exported。

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

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

  • 当我将目标和编译SDK版本从30更改为31时,我得到一个错误。类似于这个问题,但没有答案。 错误:android:导出需要显式指定。针对Android 12及更高版本的应用程序需要指定一个显式值为时,相应的组件定义了一个意图过滤器。详见https://developer.android.com/guide/topics/manifest/activity-element#exported。 但是,

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

  • 我正在使用Firebase开发一个应用程序。我有个问题需要解决。当我运行应用程序时,它会显示在构建中。 Build.Grable