Android Studioでマニフェストのマージが複数のエラーで失敗しました


249

したがって、私は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です:

<?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>

これは私のコーディングの最初の週です、これが本当にばかげたことであるとすみません。私はこれに本当に慣れていないので、他に尋ねるところはありませんでした。ルールを破った場合は申し訳ありません


2
menifest.xmlファイルの行<activity android:name = "。MainActivity" />を削除します
Pankaj Talaviya

10
エラーの詳細については、Android Studioの右下にあるGradleコンソールを確認してください。
DragonT 2017年

このリンクがお役に立てば幸いです。
Mortreza AD

同じエラーが発生しましたが、プロジェクトとライブラリに同じ最小SDKを保持することで解決しました。
Raja Jawahar、2018

youtu.be/K88WaSm3q8Y「Android Studioでマニフェストのマージが複数のエラーで失敗しました」
Roman Pokrovskij

回答:


964

アプリケーションマニフェスト(AndroidManifest.xml)を開き、をクリックしMerged Manifestます。下の画像を確認してください:

android-manifest-merge-feature

画像の右側の列にエラーが表示されている場合は、エラーを解決してみてください。同じ問題のある人を助けるかもしれません。詳細はこちら


5
素晴らしい...
感謝の気持ち

2
私の場合、少し下にスクロールしてエラーを確認しました
CodeToLife

残念ながら、Android Studio 3.5.2には「Merged Manifest」タブはありません。
FractalBob

@FractalBob 3.5.2を実行していて、「マージされたマニフェスト」タブが表示されます。マニフェストがマージされる前に他のエラーが発生している可能性があります。
sonyisda1

@ sonyisda1 Linux環境で実行していますか?Ubuntu 18.04 LTSを使用しています。
FractalBob

120

<activity android:name=".MainActivity"/>mainfestファイルから削除 します。すでに次のように定義しています。

 <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>

したがって、あいまいさを示すマニフェストファイル。


31
これがRowenのコードを修正するだけで、他の誰にとってもまったく役に立たない場合、これが受け入れられる答えであることは残念です。CLIFFORDによる答えは、実際には、エラーメッセージが示すように「ログを表示する」方法を示しています。
Andrew Koster

これは、AndroidManifest.xmlファイル内の重複するエントリをチェックして削除するだけで非常にうまく機能します。
vishwajit76

61

私にとってこれは機能します-

でのマージエラーの検索 AndroidManifest.xml

ここに画像の説明を入力してください

でマージされたマニフェストをクリックします AndroidManifest.xml

ここに画像の説明を入力してください

右の列でマニフェストのマージエラーを確認できます。この問題の解決に役立つ場合があります。


3
これは、この問題の一般的な修正です。これは、これに関する問題の本当の理由を見つけるのに役立ちます。
JoeGalind 2018

60

私も同じ問題に直面しており、多くの調査の結果、解決策が見つかりました:

  1. 最小sdkバージョンは、使用しているモジュールと同じである必要があります。たとえば、モジュールの最小sdkバージョンは14で、アプリの最小sdkバージョンは9です。同じである必要があります。
  2. アプリとモジュールのビルドバージョンが異なる場合。繰り返しますが、同じ**要するに、アプリbuild.gradleファイルとマニフェストは同じ構成にする必要があります**
  3. 同じ権限がマニフェストファイルに2回追加されるような重複はありません。同じアクティビティが2回言及されます。
  4. プロジェクトからアクティビティを削除した場合は、マニフェストファイルからも削除してください。
  5. マニフェストファイルのラベル、アイコンなどのタグが原因の場合があります。

a)xmlns:toolsマニフェストタグに行を追加します。

b)tools:replace=またはtools:ignore=をapplicationタグに追加します。

例:

<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>
  1. 2つの依存関係が同じバージョンの例ではない場合:appcompat v7:26.0.0とfacebook com.facebook.android:facebook-android-sdk:[4,5)の依存関係を使用しているfacebookはバージョンcom.androidのcardviewを使用しています。 support:cardview-v7:25.3.1およびappcompat v7:26.0.0はバージョンv7:26.0.0のcardviewを使用するため、2つのライブラリに不一致があるためエラーが発生します

エラー:タスク ':app:processDebugManifest'の実行に失敗しました。

マニフェストのマージに失敗しました:属性meta-data#android.support.VERSION@value value =(26.0.0-alpha1)from [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)にもあります。提案:オーバーライドするには、AndroidManifest.xml:25:5-27:41の要素に「tools:replace = "android:value"」を追加します。

したがって、バージョン25.3.1のappcompatを使用することで、このエラーを回避できます。

上記の点を考慮することで、この苛立たしい問題を取り除くことができます。私のブログもチェックでき ますhttps://wordpress.com/post/dhingrakimmi.wordpress.com/23


1
私の場合、追加したモジュールのテーマが原因でしたので、ツールとして使用しました:replace "icon、label、theme"
turbandroid

私の場合、追加したモジュールのテーマが原因でしたので、tools:replace "icon、label、theme"およびxmlns:tools = " schemas.android.com/tools "として使用しました。@ O'oneに感謝
alfo888_ibg

14

利用可能なソリューションに加えて、これも確認してください。
に設定android:allowBackup="false"してAndroidManifest.xmlいる場合、競合が発生する可能性がありますandroid:allowBackup="true"、他の依存関係で。

解決策
@CLIFFORD PYで提案されているように、でに切り替えMerged ManifestますAndroidManifest.xml。Androidのメーカーは、追加することをお勧めしますtools:replace="android:allowBackup"<application />、あなたにAndroidManifest.xml


12

同じ問題に直面していて、manifest.xmlに1行追加したところ、うまくいきました。

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

この行を下に追加

<application
    android:name=".MyApplication"
    android:allowBackup="true"
    android:icon="@drawable/launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:screenOrientation="portrait"
    android:supportsRtl="true"
    android:theme="@style/AppThemecustom"
    tools:replace="android:allowBackup,icon,theme,label">

お役に立てば幸いです。


どうもありがとうございます!Zenattのサポートページが原因の非常に特殊なシナリオで「添付ファイル」をクリックすると、この問題に直面していました。さまざまな質問から非常に多くの回答を試してみましたが、あなたのコメントだけが役に立ちました!
ナタリー

@Natalieお役に立てて嬉しいです:)
Pre_hacker

11

以下のコードをプロジェクトのマニフェストアプリケーションタグに追加するだけです...

<application
        tools:node="replace">

ありがとうございました
tej shah

8

私の場合、<uses-permission>要素に冗長性があったため、エラーが表示されていました。したがって、AndroidManifest.xml同じことをファイルで確認してください。

Android Studioのバージョンは3.0.1です

オペレーティングシステムはWindows 7

こちらが参考用のスクリーンショットです。

マニフェストファイルの冗長性を示すスクリーンショット。


これは@ CLIFFORD-PYの回答の前に投稿されましたが、Merged Manifestビューを介してマージエラーを見つけると、この特定の冗長なエラーをキャッチできます。
sonyisda1


7

通常、マニフェストにエラーがある場合に発生します。AndroidManifest.xmlを開きます。マージされたマニフェストタブをクリックします。エラーはそこで確認できます。また、そこに記載されている提案も含めます。com.google.android.gmsのインポート中に同様の問題が発生した場合.maps.model.LatLng、アプリケーションタグにtools:overrideLibrary = "com.google.android.gms.maps"を含めることを提案しましたが、ビルドは成功しました。


3

私のケースで修正しました

build.gradle(Module:app)

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

この回答はOnSignalのプッシュ通知を取り消しました


2
  1. AndroidManifest.xml

    • アプリケーションで、追加tools:replace="android:icon, android:themeして
    • マニフェストルートに、 xmlns:tools="http://schemas.android.com/tools
  2. build.gradle

    • ルートに追加 useOldManifestMerger true

2

最小SDKバージョンは、使用しているモジュール/ライブラリのバージョンと同じである必要があります。例:モジュールの最小SDKバージョンは26で、アプリの最小SDKバージョンは21です。


1

過去数日間、私も同じ問題を経験していました。しかし、その後、多くの調査を行って、ようやくこれに対する解決策を見つけました。
この問題を解決するには、次のことを行う必要があり
ます。1.プロジェクトのbuild.gradleファイルとモジュールのbuild.gradleファイルに、すべての依存関係の同じバージョンが含まれているかどうかを 確認します。
2.プロジェクトのcompileSdkVersionbuildToolsVersionminSdkVersion、およびtargetSdkVersionが、プロジェクトに追加したモジュールまたはライブラリ内のものと一致することを確認します。

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

}

お役に立てれば。


1

Androidライブラリモジュールを追加した後、このエラーが発生した場合。
あなたはあなたのAndroidライブラリモジュールandroid:label="@string/app_name"から単純に削除することでそれを修正することができますAndroidManifest.xml


1

Gradleコンソールを開くと、特定の行を追加するようGradleから提案されます(例:tools:replace = "android:allowBackup"またはtools:replace = "android:label"など)。その行をマニフェストファイルのタグの下に追加し、gradleを同期します。これで完了です。


1

私の場合、Activityタグ内にいくつかの空のインテントフィルターを残すために起こりました

    <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">

            <intent-filter>

            </intent-filter>

    </activity> 

したがって、それらを削除するだけで問題は解決しました。

    <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
    </activity> 

0

私の場合、Android Studioの初心者として、既存のプロジェクトをEclipseからAndroid Studioに移動したところ、Eclipseで取得されなかったManifest.xml内にアクティビティの重複した定義があることがわかりました。 Gradleエラー。

これは、Gradle Console(画面右下)に移動して見つけました。


0

ファイル内のフィールドの名前を屈折(SHIFT + F6で名前を変更)すると、私と2回発生し、どこでも変更するように求められます。注意を払わずにどこでも名前を変更します。たとえば、Javaクラスに「id」という変数名があり、その名前をSHIFT + F6で変更したとします。他の場所でIDを変更するかどうかを尋ねる次のダイアログに注意を払わない場合は、すべてをチェックすると、レイアウトファイルのすべてのIDが新しい値から変更されます。


0

これは非常に単純なエラーであり、mainifest.xmlファイルでアクティビティ呼び出しを2回定義した場合にのみ発生します。

<activity android:name="com.futuretech.mpboardexam.Game" ></activity>

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



//solution:use only one 

0

これをアプリモジュール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'
        }
    }
}}

これから


0

回答ファンファンリンを補足します。私はこれらの行を削除しました:

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

0

上記のようにAndroidxに移行し、SDKの最小バージョンを26に設定するだけです。間違いなくこれは完全に機能します。


0

次のハックは機能します:

  1. xmlns:tools="http://schemas.android.com/tools"マニフェストタグに行を追加します
  2. tools:replace="android:icon,android:theme,android:allowBackup,label,name" アプリケーションタグに追加


0

私の場合、jetbrainsライブラリからいくつかの注釈を使用していました。これらのアノテーションと依存関係を削除したところ、問題なく動作しました。

したがって、Androidコードのライブラリと依存関係を注意深く確認してください。


0

で複数のmanifestPlaceholderアイテムを使用している場合build.gradleファイルでは、個別のアイテムではなく、配列要素として追加する必要があります。

たとえば、これによりビルドエラーまたはコンパイルエラーが発生します。「java.lang.RuntimeException:Manifest merger failed with multiple errors」:

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

これでエラーが修正されます:

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

0

これは、従来のサポートライブラリで新しいマテリアルライブラリを使用しているためです。

を使用するandroid.supportandroidxは、に移行する必要がありますcom.google.android.material

Android Studio v 3.2以降を使用している場合は、単に

リファクタリングに移動---> ANDROID Xに移行します。

プロジェクトのバックアップを作成してください。


0

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の以前のバージョンもその一部です。latest update

両方のライブラリを使用している場合は、Facebook SDK Library削除してください。

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

更新

Android Studio 3.0以降のバージョンから、依存関係をアプリに追加するために、または代わりにapp.gradleファイルを使用する必要があります。implementationapicompile


0

CLIFFORDの回答でエラーを確認した後、この問題を解決するのに役立ったのは、intent-filterアクションタグで「android:namex」の名前を「android:name」に変更することでした。同じソリューションが他の誰かを助ける場合。

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:namex="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.