es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Android: Las aplicaciones diseñadas para Android 12 o versiones superiores deben especificar un valor explícito para `android:exported`.

He actualizado mi versión de SDK a 31 y después recibí este error. Este es mi Gradle:

android {
    compileSdkVersion 31

    defaultConfig {
        applicationId "com.persiandesigners.alldentshops"
        minSdkVersion 16
        targetSdkVersion 31
        vectorDrawables.useSupportLibrary = true
        versionCode 1
        versionName "1"
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.4.0'
    implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha01'
    implementation 'androidx.cardview:cardview:1.0.0-alpha01'
    implementation 'com.google.android.material:material:1.2.0-alpha01'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta4'
}

Recibí este error:

Falló la combinación de manifiestos: android:exported debe especificarse explícitamente para . Las aplicaciones que apuntan a Android 12 y versiones posteriores deben especificar un valor explícito para android:exported cuando el componente correspondiente tiene un filtro de intenciones definido. Consulte https://developer.android.com/guide/topics/manifest/activity-element#exported para obtener detalles.

Hice lo que dice, este es mi código de manifiesto:

<activity android:name="mypackage.MainActivity" android:exported="true" tools:node="merge" android:label="@string/app_name" android:screenorientation="portrait" android:theme="@style/SplashScreenTheme" android:windowsoftinputmode="stateAlwaysHidden">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"></action>
        <category android:name="android.intent.category.LAUNCHER"></category>
    </intent-filter>
</activity>

Esta es la actividad de lanzamiento y he agregado la etiqueta android:exported, intenté limpiar y reconstruir, pero no funcionó. Sigo recibiendo un error de combinación en el manifiesto:

Errores de combinación: Error: android:exported debe especificarse explícitamente para <activity>. Las aplicaciones que apuntan a Android 12 y versiones posteriores deben especificar un valor explícito para `android:exported` cuando el componente correspondiente tiene un filtro de intenciones definido. Consulte https://developer.android.com/guide/topics/manifest/activity-element#exported para obtener detalles. forushgah_alldentalshop.app manifiesto principal (este archivo)

Está señalando a la actividad MainActivity.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el atributo android:exported debe ser especificado explícitamente para la actividad MainActivity en el archivo AndroidManifest.xml. Ha añadido el atributo de la siguiente manera:

    <activity android:name="mypackage.MainActivity" android:exported="true" tools:node="merge" android:label="@string/app_name" android:screenorientation="portrait" android:theme="@style/SplashScreenTheme" android:windowsoftinputmode="stateAlwaysHidden">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"></action>
            <category android:name="android.intent.category.LAUNCHER"></category>
        </intent-filter>
    </activity>
    

    Sin embargo, parece que el error persiste incluso después de agregar este atributo. En este caso, es posible que desee comprobar si hay otros componentes de actividad en su aplicación que no tengan el atributo android:exported especificado. El mensaje de error sugiere que todos los componentes con filtros de intenciones definidos deben tener este atributo especificado.

    Si aún tiene problemas, puede intentar especificar el atributo tools:replace para el atributo android:exported en el archivo AndroidManifest.xml de la siguiente manera:

    <activity android:name="mypackage.MainActivity" android:exported="true" tools:replace="android:exported" tools:node="merge" android:label="@string/app_name" android:screenorientation="portrait" android:theme="@style/SplashScreenTheme" android:windowsoftinputmode="stateAlwaysHidden">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"></action>
            <category android:name="android.intent.category.LAUNCHER"></category>
        </intent-filter>
    </activity>
    

    Esto debería reemplazar cualquier atributo android:exported existente con el que se especifica aquí, resolviendo así los errores de fusión.

Comments are closed.