Итак, я новичок в Android и Java. Я только начал учиться. Сегодня, когда я экспериментировал с Intent, у меня возникла ошибка.

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs

Я нашел здесь несколько решений и попытался их реализовать, но это не сработало.

Это мой 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'
}

Это мой AndroidManifest:


package="com.example.rohan.petadoptionthing" >


    
        
            

            
        
    

    

    
    



Это моя первая неделя программирования, прошу прощения, если это действительно глупо. Я действительно новичок в этом и не нашел другого места, чтобы спросить. Извините, если я нарушил правила

Rohan Mallya

Ответов: 38

Ответы (38)

Откройте манифест приложения (AndroidManifest.xml) и щелкните вкладку Объединенный манифест внизу панели редактирования. Проверьте изображение ниже:

enter image description here

На изображении вы видите Ошибка в правом столбце, попробуйте устранить ошибку. Это может помочь кому-то с той же проблемой. Подробнее здесь.

Кроме того, как только вы обнаружите ошибку и получите эту ошибку из внешней библиотеки, которую вы используете, вы должны позволить компилятору игнорировать атрибут из внешней библиотеки. // добавляем этот атрибут в тег приложения в манифесте

   tools:replace="android:allowBackup" 
                                                                                                                                          
   //Add this in the manifest tag at the top

   xmlns:tools="http://schemas.android.com/tools"

Если ваш проект ориентирован на Android 12, то Добавьте это во все теги с

android:exported="true/false"

Я тоже столкнулся с теми же проблемами, и после долгих исследований я нашел решение:

  1. Ваша минимальная версия sdk должна быть такой же, как и у модулей, которые вы используете, например: минимальная версия sdk вашего модуля - 14, а минимальная версия sdk вашего приложения - 9. Она должна быть такой же.
  2. Если версия сборки вашего приложения и модулей не совпадают. Опять же, должно быть то же самое ** Короче говоря, ваше приложение build.gradle файл и манифест должны иметь одинаковые конфигурации **
  3. Нет дублирования, например, одинаковые разрешения, добавленные в файл манифеста дважды, одно и то же действие упоминается дважды.
  4. Если вы удалили какое-либо действие из своего проекта, удалите его также из файла манифеста.
  5. Иногда из-за ярлыка, значка и т. Д. Тега файла манифеста:

a) Добавьте строку xmlns: tools в тег manifest.

б) Добавьте tools: replace = или tools: ignore = в тег приложения.

Пример:



  
  


  1. Если две зависимости имеют разные версии пример: вы используете зависимость для appcompat v7: 26.0.0 и для facebook com.facebook.android:facebook-android-sdk:[4,5) facebook использует cardview версии com.android.support:cardview-v7:25.3.1, а appcompat v7: 26.0.0 использует cardview версии v7: 26.0.0. Таким образом, в двух библиотеках есть несоответствия, что дает ошибку

Ошибка: не удалось выполнить задачу ': app: processDebugManifest'.

Не удалось объединить манифест: метаданные атрибута # android.support.VERSION@value значение = (26.0.0-alpha1) из [com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml: 27: 9-38 также присутствует в [com.android.support:cardview-v7:25.3.1] AndroidManifest.xml: 24: 9-31 value = (25.3.1). Предложение: добавьте 'tools: replace = "android: value"' к элементу в AndroidManifest.xml: 25: 5-27: 41 для переопределения.

Таким образом, используя appcompat версии 25.3.1, мы можем избежать этой ошибки

Принимая во внимание вышеуказанные моменты, вы избавитесь от этой раздражающей проблемы. Вы тоже можете проверить мой блог https://wordpress.com/post/dhingrakimmi.wordpress.com/23

в течение последних нескольких дней я тоже сталкивался с той же проблемой. Но после долгих исследований я наконец нашел решение для этого.
Чтобы решить эту проблему, вам необходимо:
1. Убедитесь, что файл build.gradle вашего проекта и файл build.gradle модуля содержат одинаковые версии всех зависимостей.
2. Убедитесь, что compileSdkVersion, buildToolsVersion, minSdkVersion и targetSdkVersion соответствует таковому в модулях . или библиотеки, которые вы добавили в проект.

compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
    applicationId "com.example.appname"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 22
    versionName "2.0.3"

}

Надеюсь, это поможет.

эта очень простая ошибка возникает только тогда, когда вы определяете любой вызов активности дважды в файле mainifest.xml. Пример, например,



//and launcher also------like that



//solution:use only one 

Дополняю ответ Phan Van Linh. Я удалил эти строки:

  android:icon="@mipmap/ic_launcher"
  android:label="name"

Я использовал FirebaseUI Library вместе с Facebook SDK Library, из-за чего у меня возникла проблема.

implementation 'com.firebaseui:firebase-ui-database:0.4.4'
implementation 'com.facebook.android:facebook-android-sdk:[4,5)'

И с [отсюда] [1] я избавился от этой проблемы.

С последним обновлением библиотеки FirebaseUIпредыдущая версия Facebook SDK также является его частью.

Если вы используете обе библиотеки, удалите библиотеку SDK Facebook.

https://github.com/firebase/FirebaseUI-Android/issues/230

ОБНОВЛЕНИЕ

Из Android Studio 3.0 и более поздних версий требуется файл app.gradle для использования реализации или api вместоскомпилировать для добавления зависимостей в приложение.

Просто добавьте код ниже в тег приложения Manifest вашего проекта ...


Я решил эту проблему, удалив строку ниже из AndroidManifest.xml

android:allowBackup="true"

Я решил это, удалив android: замените tag

В моем случае я использовал аннотации из библиотеки jetbrains. Я удалил эти аннотации и зависимости, и все заработало.

Поэтому внимательно проверьте библиотеки в коде Android и зависимости.

Я решил это с помощью Refactor -> Migrate to AndroidX

GL

Если вы используете несколько manifestPlaceholder элементов в вашем файле build.gradle, вы должны добавить их как элементы массива, а не отдельные элементы.

Например, это вызовет ошибку сборки или компиляции: «java.lang.RuntimeException: слияние манифеста не удалось с несколькими ошибками»:

android {
    ...
    defaultConfig {
        manifestPlaceholders = [myKey1: "myValue1"]
        manifestPlaceholders = [myKey2: "myValue2"] // Error!
    }
}

Это исправит ошибку:

android {
    ...
    defaultConfig {
        manifestPlaceholders = [myKey1: "myValue1", myKey2: "myValue2"]
    }
}

У меня ЭТО работает -

Поиск ошибок слияния в AndroidManifest.xml

enter image description here

Щелкните объединенный манифест в AndroidManifest.xml

enter image description here

Вы можете просмотреть манифест ошибки слияния в правом столбце. Это может помочь решить эту проблему.

Перекрестная проверка простого ответа:

Вы можете определять одно и то же действие несколько раз в файле manifest.xml.

ИЛИ

Действие, услуга или получатель, которые вы определили в файле manifest.xml, которого нет в структуре вашего проекта.

В моем случае я решил это, обновив classpath в файле build.gradle (Project) до последней версии.

Было так:

dependencies {
    classpath 'com.android.tools.build:gradle:3.5.0'
}

После обновления до последней версии:

dependencies {
    classpath 'com.android.tools.build:gradle:3.5.4'
}

Все нормально заработало! Надеюсь, это кому-то поможет, если все приведенные выше ответы не решат проблему.

Это потому, что вы используете новую библиотеку материалов с устаревшей библиотекой поддержки.

Вам необходимо перенести android.support на androidx, чтобы использовать com.google.android.material.

Если вы используете android studio v 3.2 или выше, просто

перейти к рефакторингу ---> ПЕРЕЙТИ НА ANDROID X.

Сделайте резервную копию вашего проекта.

This error occurs because you don't have proper statements at the Manifest root such:


So you should remove additional texts in it.

Обычно возникает, когда у вас есть ошибки в манифесте. Откройте AndroidManifest.xml. Щелкните вкладку объединенного манифеста. Там можно увидеть ошибки. Также включите упомянутые там предложения. Когда у меня была аналогичная проблема при импорте com.google. android.gms.maps.model.LatLng, он предложил мне включить tools: overrideLibrary = "com.google.android.gms.maps" в тег приложения, и сборка прошла успешно.

Это случилось со мной дважды, когда я рефрактировал (переименовывать с помощью SHIFT + F6) имя поля в наших файлах, и он просит вас изменить его везде, и мы, не обращая внимания, меняем имя везде. Например, если у вас есть имя переменной «id» в вашем классе Java, и вы переименовываете его с помощью SHIFT + F6. Если вы не обращаете внимания на следующий диалог, который спросит вас, где еще он собирается изменить идентификатор, и вы отметите галочкой все, он изменит все идентификаторы в ваших файлах макета с нового значения.

Если после добавления модуля библиотеки Android вы получите эту ошибку.
Вы можете исправить это, просто удалив android: label = "@ string / app_name" из AndroidManifest.xml вашего модуля библиотеки Android

Версия minium sdk должна быть такой же, как у модулей / lib, которые вы используете Например: минимальная версия SDK вашего модуля - 26, а минимальная версия SDK вашего приложения - 21. Она должна быть такой же.

Откройте консоль Gradle, затем вы увидите, что gradle предлагает вам добавить конкретную строку (например: tools: replace = "android: allowBackup" или tools: replace = "android: label" и т. Д.). Добавьте эту строку в свой файл манифеста под тегом и синхронизируйте gradle, вот и все.

Увидев ответ CLIFFORD об ошибке, мне помогло решить эту проблему переименование «android: namex» в «android: name» в теге действия фильтра намерений. В случае, если это же решение поможет кому-то другому.

    
        
            

            
        
    

Просто перейдите на Androidx, как показано выше, а затем установите минимальную версию sdk на 26 ... без сомнения, это отлично работает

В дополнение к доступным решениям, проверьте это также.
Если вы установили android: allowBackup = "false" в своем AndroidManifest.xml, тогда может быть конфликт для android: allowBackup = "true" в других зависимостях.

Решение
Как предлагает @CLIFFORD P Y, переключитесь на Объединенный манифест в вашем AndroidManifest.xml. Android Studio предложит добавить tools: replace = "android: allowBackup" in в ваш AndroidManifest.xml.

Работает следующий хак:

  1. Добавьте строку xmlns: tools = "http://schemas.android.com/tools" в тег манифеста
  2. Добавить tools: replace = "android: icon, android: theme, android: allowBackup, label, name" в теге приложения

Поместите это в конец вашего модуля приложения build.gradle:

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '25.3.0'
        }
    }
}}

из этого

Удалите из вашего файла mainfest. Как вы уже определили как:

 
        
            

            
        
    

Итак, файл манифеста показывает неоднозначность.

Как новичок в Android Studio, в моем случае я переместил существующий проект из Eclipse в Android Studio и обнаружил, что в моем Manifest.xml есть повторяющееся определение активности, которое не было подобрано Eclipse. отображается как ошибка Gradle.

Я нашел это, перейдя в консоль Gradle (в правом нижнем углу экрана).

Я столкнулся с той же проблемой, и я только что добавил одну строку в свой manifest.xml, и у меня она сработала.

tools:replace="android:allowBackup,icon,theme,label,name"> 

добавьте эту строку под


Надеюсь, это поможет.

В моем случае я исправил его на

build.gradle (Модуль: приложение)

defaultConfig {
----------
multiDexEnabled true
}
dependencies {
    ...........
    implementation 'com.google.android.gms:play-services-gcm:11.0.2'
    implementation 'com.onesignal:OneSignal:3.+@aar'
    }

Этот ответ относится к push-уведомлению OnSignal

В моем случае тег моего приложения включает:

 

Я решил эту проблему, добавив новый параметр как android: appComponentFactory = ""

Итак, мой последний тег приложения становится:


Я столкнулся с вышеуказанной проблемой, когда устал использовать последнюю версию firebase-auth как «19.3.1». Тогда как в моем проекте я уже использовал firebase, но версия была «16.0.6».

Я вижу ответы, они полные и полезные. В любом случае, если вы завершаете кодовую лабораторию Jetpack Compose Testing и обнаруживаете эту ошибку в конце 2021 года, решение не является принятым ответом, вам необходимо понизить целевую версию sdk до 30.

В app / build.gradle замените:

targetSdkVersion 31

с:

targetSdkVersion 30

И снова запустите Android Tests

I had a weird encounter with this problem. when renaming variable name to user_name, I mistakenly rename all of the name to user_name for the project. So my xml tag became same goes for string, style, manifest too. But when I check merged manifest, it showed nothing, because I had only one manifest, nothing to find.

Итак, проверьте, есть ли у вас некорректный xml-файл.

В моем случае это показало ошибку, потому что в элементе была избыточность. Так что проверьте его в файле AndroidManifest.xml.

Версия Android Studio 3.0.1

Operating System is Windows 7

Вот скриншот для справки.

Screen-shot which shows redundancy in manifest file.

  1. В AndroidManifest.xml:

    • В приложении добавьте tools: replace = "android: icon, android: theme и
    • .
    • В корне манифеста добавьте xmlns: tools = "http://schemas.android.com/tools
  2. В build.gradle:

    • В корневом каталоге добавить useOldManifestMerger true

В моем случае это произошло из-за того, что оставил какой-то пустой фильтр намерений внутри тега Activity

    

            

            

     

Значит, простое их удаление решило проблему.

    
     

2022 WebDevInsider