La fusión de manifiesto falló con múltiples errores en Android Studio
Entonces, soy un principiante en Android y Java. Recién comencé a aprender. Mientras experimentaba con Intent hoy, cometí un error.
Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs
Encontré algunas soluciones aquí e intenté implementarlas, pero no funcionó.
Este es mi build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
defaultConfig {
applicationId "com.example.rohan.petadoptionthing"
minSdkVersion 10
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
}
Este es mi manifiesto de Android:
<?xml version="1.0" encoding="utf-8"?>
package="com.example.rohan.petadoptionthing" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Second"
/>
<activity android:name=".third"/>
<activity android:name=".MainActivity"/>
</application>
Esta es mi primera semana con la codificación, lo siento si esto es una tontería. Soy realmente nuevo en esto y no encontré ningún otro lugar para preguntar. Perdón si rompí alguna regla
Abra el manifiesto de la aplicación ( AndroidManifest.xml
) y haga clic en Merged Manifest
la pestaña en la parte inferior del panel de edición. Mira la imagen a continuación:
En la imagen puedes ver el error en la columna de la derecha, intenta solucionar el error. Puede ayudar a alguien con el mismo problema. Leer más aquí .
Además, una vez que encontró el error y si obtiene ese error de la biblioteca externa que está utilizando, debe permitir que el compilador ignore el atributo de la biblioteca externa. //agrega este atributo en la etiqueta de la aplicación en el manifiesto
tools:replace="android:allowBackup"
//Add this in the manifest tag at the top
xmlns:tools="http://schemas.android.com/tools"
Elimínelo <activity android:name=".MainActivity"/>
de su archivo mainfest. Como ya lo has definido como:
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Entonces, el archivo de manifiesto muestra ambigüedad.
Para mí ESTO funciona -
Encontrar errores de fusión enAndroidManifest.xml
Haga clic en Manifiesto fusionado enAndroidManifest.xml
Puede ver el error de fusión del manifiesto en la columna de la derecha. Puede ayudar a resolver este problema.
También me enfrenté a los mismos problemas y, después de mucha investigación, encontré la solución:
- Su versión mínima de SDK debe ser la misma que la de los módulos que está utilizando, por ejemplo: la versión mínima de su módulo SDK es 14 y la versión mínima de SDK de su aplicación es 9. Debería ser la misma.
- Si la versión de compilación de su aplicación y sus módulos no son iguales. Nuevamente debería ser lo mismo ** En resumen,
build.gradle
el archivo de su aplicación y el manifiesto deben tener las mismas configuraciones **- No hay duplicación como los mismos permisos agregados en el archivo de manifiesto dos veces, la misma actividad mencionada dos veces.
- Si ha eliminado alguna actividad de su proyecto, elimínela también de su archivo de manifiesto.
- A veces se debe a la etiqueta, icono, etc., etiqueta del archivo de manifiesto:
a) Agregue la
xmlns:tools
línea en la etiqueta del manifiesto.b) Agregar
tools:replace=
otools:ignore=
en la etiqueta de la aplicación.
Ejemplo:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.slinfy.ikharelimiteduk"
xmlns:tools="http://schemas.android.com/tools"
android:versionCode="1"
android:versionName="1.0" >
<application
tools:replace="icon, label"
android:label="myApp"
android:name="com.example.MyApplication"
android:allowBackup="true"
android:hardwareAccelerated="false"
android:icon="@drawable/ic_launcher"
android:theme="@style/Theme.AppCompat" >
</application>
</manifest>
- Si dos dependencias no tienen la misma versión, ejemplo: está usando la dependencia para appcompat v7:26.0.0 y para facebook com.facebook.android:facebook-android-sdk:[4,5) facebook usa cardview de la versión com.android. soporte: cardview-v7:25.3.1 y appcompat v7:26.0.0 usan cardview de la versión v7:26.0.0, por lo que hay discrepancia en dos bibliotecas y, por lo tanto, se genera un error
Error: Error de ejecución de la tarea ':app:processDebugManifest'.
Error en la fusión del manifiesto: atributo meta-data#android.support.VERSION@value value=(26.0.0-alpha1) de [com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml:27:9 -38 también está presente en [com.android.support:cardview-v7:25.3.1] AndroidManifest.xml:24:9-31 value=(25.3.1). Sugerencia: agregue 'tools:replace="android:value"' al elemento en AndroidManifest.xml:25:5-27:41 para anularlo.
Entonces, al usar appcompat de la versión 25.3.1, podemos evitar este error.
Si tiene en cuenta los puntos anteriores, podrá deshacerse de este irritante problema. También puedes consultar mi blog https://wordpress.com/post/dhingrakimmi.wordpress.com/23
Simplemente agregue el siguiente código en la etiqueta de aplicación del manifiesto de su proyecto...
<application
tools:node="replace">