Sáp nhập Manifest không thành công với nhiều lỗi trong Android Studio


249

Vì vậy, tôi là người mới bắt đầu sử dụng Android và Java. Tôi mới bắt đầu học. Trong khi tôi đang thử nghiệm với Intent ngày hôm nay, tôi đã gặp phải một lỗi.

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

Tôi đã tìm thấy một số giải pháp ở đây và cố gắng thực hiện chúng, nhưng nó không hoạt động.

Đây là bản dựng của tôi.

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

Đây là AndroidManifest của tôi:

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

Đây là tuần đầu tiên của tôi với tiền mã hóa, tôi xin lỗi nếu đây là một điều thực sự ngớ ngẩn. Tôi thực sự mới với điều này và không tìm thấy nơi nào khác để hỏi. Xin lỗi nếu tôi vi phạm bất kỳ quy tắc nào


2
xóa dòng <Activity android: name = ". MainActivity" /> trong tệp menifest.xml của bạn
Pankaj Talaviya

10
Để biết thông tin chi tiết về lỗi, bạn có thể kiểm tra Gradle Console trong Android Studio ở góc dưới bên phải.
DragonT

Tôi hy vọng liên kết này sẽ hữu ích.
Mortreza AD

Tôi đã gặp cùng một lỗi. Nhưng đã giải quyết nó bằng cách giữ cùng một SDK tối thiểu trong dự án và thư viện.
Raja Jawahar

youtu.be/K88WaSm3q8Y "Sáp nhập đơn giản không thành công với nhiều lỗi trong Android Studio"?
La Mã Pokrovskij

Câu trả lời:


962

Mở bảng kê khai ứng dụng ( AndroidManifest.xml) và nhấp vào Merged Manifest. Kiểm tra hình ảnh dưới đây:

tính năng hợp nhất android

Từ hình ảnh bạn có thể thấy Lỗi ở cột bên phải, cố gắng giải quyết lỗi. Nó có thể giúp một số người có cùng một vấn đề. Đọc thêm ở đây .


5
tuyệt vời ... không thể tìm thấy từ nào để bày tỏ lời cảm ơn của tôi
Shahzad Afridi

2
trong trường hợp của tôi, tôi đã cuộn nó xuống một chút để xem các lỗi
CodeToLife

Thật không may, không có bất kỳ tab "Hợp nhất nào" trong Android Studio 3.5.2.
FractalBob

@FractalBob Tôi đang chạy 3.5.2 và thấy tab 'Merged Manifest' .. bạn có một số lỗi khác xảy ra trước khi các bảng kê khai được hợp nhất.
sonyisda1

@ sonyisda1 Bạn có đang chạy trong môi trường Linux không? Tôi có Ubuntu 18.04 LTS.
FractalBob

120

Xóa <activity android:name=".MainActivity"/>khỏi tập tin chính của bạn. Như bạn đã định nghĩa nó là:

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

Vì vậy, tập tin Manifest cho thấy sự mơ hồ.


31
Thật tệ khi đây là câu trả lời được chấp nhận, khi nó chỉ sửa mã của Rowen nhưng hoàn toàn không có ích cho bất kỳ ai khác. Câu trả lời của CLIFFORD thực sự chỉ cho bạn cách "xem nhật ký" như thông báo lỗi cho thấy.
Andrew Koster

Nó hoạt động rất tốt chỉ kiểm tra và loại bỏ bất kỳ mục trùng lặp nào trong tệp AndroidManifest.xml.
vishwajit76

61

Đối với tôi công việc này -

Tìm lỗi hợp nhất trong AndroidManifest.xml

nhập mô tả hình ảnh ở đây

Nhấp vào Manifest hợp nhất trong AndroidManifest.xml

nhập mô tả hình ảnh ở đây

Bạn có thể xem lỗi hợp nhất tệp kê khai ở cột bên phải. Nó có thể giúp giải quyết vấn đề này.


3
Đây là một sửa chữa chung cho vấn đề này. Điều này giúp bạn tìm ra lý do thực sự cho bất kỳ vấn đề nào liên quan đến việc này.
JoeGalind

60

Tôi cũng đang đối mặt với những vấn đề tương tự, và sau rất nhiều nghiên cứu đã tìm ra giải pháp:

  1. Phiên bản sdk tối thiểu của bạn phải giống với các mô-đun bạn đang sử dụng, ví dụ: phiên bản sdk mô-đun tối thiểu của bạn là 14 và phiên bản sdk tối thiểu của ứng dụng là 9 Nó sẽ giống nhau.
  2. Nếu phiên bản xây dựng của ứng dụng và mô-đun của bạn không giống nhau. Một lần nữa, nó sẽ giống nhau ** Tóm lại, build.gradletệp ứng dụng và tệp kê khai của bạn phải có cùng cấu hình **
  3. Không có sự trùng lặp như các quyền giống nhau được thêm vào trong tệp kê khai hai lần, cùng một hoạt động đề cập đến hai lần.
  4. Nếu bạn đã xóa bất kỳ hoạt động nào khỏi dự án của bạn, hãy xóa nó khỏi tệp kê khai của bạn.
  5. Đôi khi vì nhãn, biểu tượng vv của tệp kê khai:

a) Thêm xmlns:toolsdòng trong thẻ kê khai.

b) Thêm tools:replace=hoặc tools:ignore=trong thẻ ứng dụng.

Thí dụ:

<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. Nếu hai phụ thuộc không cùng phiên bản ví dụ: bạn đang sử dụng phụ thuộc cho appcompat v7: 26.0.0 và cho facebook com.facebook.android:facebook-android-sdk:[4,5) facebook sử dụng cardview của phiên bản com.android. hỗ trợ: cardview-v7: 25.3.1 và appcompat v7: 26.0.0 sử dụng cardview của phiên bản v7: 26.0.0, do đó, có sự phân tách trong hai thư viện và do đó gây ra lỗi

Lỗi: Thực thi không thành công cho nhiệm vụ ': app: processDebugManifest'.

Sáp nhập đơn giản không thành công: Thuộc tính meta-data#android.support.VERSION@value value = (26.0.0-alpha1) từ [com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml: 27: 9 -38 cũng có mặt tại [com.android.support:cardview-v7:25.3.1] AndroidManifest.xml: 24: 9-31 value = (25.3.1). Gợi ý: thêm 'tools: thay thế = "android: value"' vào phần tử tại AndroidManifest.xml: 25: 5-27: 41 để ghi đè.

Vì vậy, bằng cách sử dụng appcompat của phiên bản 25.3.1, chúng tôi có thể tránh được lỗi này

Bằng cách xem xét các điểm trên trong tâm trí, bạn sẽ thoát khỏi vấn đề khó chịu này. Bạn cũng có thể kiểm tra blog của tôi https://wordpress.com/post/d Breathrakimmi.wordpress.com/23


1
trong trường hợp của tôi, đó là do chủ đề của mô-đun tôi đã thêm nên tôi đã sử dụng làm công cụ: thay thế "biểu tượng, nhãn, chủ đề"
turbandroid

trong trường hợp của tôi, đó là do chủ đề của mô-đun tôi đã thêm nên tôi đã sử dụng làm công cụ: thay thế "icon, nhãn, theme" và xmlns: tools = " schemas.android.com/tools ". cảm ơn @ O'one
alfo888_ibg 23/03/18

14

Ngoài các giải pháp có sẵn, xin vui lòng kiểm tra điều này cũng.
Nếu bạn đã thiết lập android:allowBackup="false"trong của bạn AndroidManifest.xmlsau đó có thể có một cuộc xung đột cho android:allowBackup="true"trong phụ thuộc khác.

Giải pháp
Theo đề xuất của @CLIFFORD PY, hãy chuyển sang Merged Manifesttrong AndroidManifest.xml. Android Studio sẽ đề nghị để thêm tools:replace="android:allowBackup"vào <application />trong của bạn AndroidManifest.xml.


12

Tôi đã phải đối mặt với cùng một vấn đề và tôi vừa thêm một dòng trong tệp kê khai của mình và nó đã hoạt động với tôi.

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

thêm dòng này dưới

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

Hy vọng nó sẽ giúp.


cảm ơn bạn rất nhiều! Tôi đã phải đối mặt với vấn đề này trong một kịch bản rất cụ thể do trang hỗ trợ Zendesk gây ra, khi nhấp vào "đính kèm tệp". Đã thử rất nhiều câu trả lời từ các câu hỏi khác nhau và chỉ nhận xét của bạn mới giúp được!
Natalie

@Nirthie Tôi rất vui vì nó đã giúp :)
Pre_hacker

11

Chỉ cần thêm mã dưới đây vào thẻ ứng dụng Manifest dự án của bạn ...

<application
        tools:node="replace">

Cảm ơn bạn rất nhiều
tej shah

8

Trong trường hợp của tôi, nó đã hiển thị một lỗi vì có phần dư thừa trong <uses-permission>phần tử. Vì vậy, xin vui lòng kiểm tra trong AndroidManifest.xmltập tin của bạn cho cùng.

Phiên bản Android Studio là 3.0.1

Hệ điều hành là Windows 7

Dưới đây là ảnh chụp màn hình để tham khảo.

Ảnh chụp màn hình cho thấy sự dư thừa trong tệp kê khai.


Mặc dù điều này đã được đăng trước câu trả lời của @ CLIFFORD-PY, việc tìm kiếm các lỗi hợp nhất thông qua chế độ xem Merged Manifest sẽ bắt lỗi lỗi dự phòng cụ thể này.
sonyisda1

8

Tôi đã giải quyết vấn đề này với Refactor -> Di chuyển sang AndroidX

GL


7

Thường xảy ra khi bạn có lỗi trong tệp kê khai của mình. Mở AndroidManifest.xml. Nhấp vào tab tệp kê khai đã hợp nhất. Có thể thấy các lỗi ở đó. Cũng bao gồm các đề xuất được đề cập ở đó. Khi tôi gặp vấn đề tương tự khi nhập com.google.android.gms .maps.model.LatLng, nó gợi ý cho tôi bao gồm các công cụ: overrideL Library = "com.google.android.gms.maps" trong thẻ ứng dụng và quá trình xây dựng đã thành công.


3

Trường hợp của tôi tôi đã sửa nó bằng

build.gradle (Module: ứng dụng)

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

Câu trả lời này liên quan đến thông báo đẩy OnSignal


2
  1. Trong AndroidManifest.xml:

    • Tại ứng dụng, thêm tools:replace="android:icon, android:theme
    • Tại thư mục gốc, thêm xmlns:tools="http://schemas.android.com/tools
  2. Trong build.gradle:

    • Tại thư mục gốc, thêm useOldManifestMerger true

2

Phiên bản sdk minium phải giống với các mô-đun / lib bạn đang sử dụng Ví dụ: Mô-đun mink phiên bản của bạn là 26 và phiên bản sdk ứng dụng của bạn là 21 Nó cũng giống như vậy.


1

trong vài ngày qua tôi cũng đã trải qua vấn đề tương tự. Nhưng sau đó, rất nhiều nghiên cứu cuối cùng tôi đã tìm ra giải pháp cho việc này.
Để giải quyết vấn đề này, những gì bạn cần làm là:
1. Kiểm tra xem dự án của bạn build.gradle tập tin và các mô-đun của build.gradle tập tin chứa cùng một phiên bản của tất cả phụ thuộc.
2. Đảm bảo, compileSdkVersion , buildToolsVersion , minSdkVersiontargetSdkVersion của dự án khớp với một trong các mô-đun hoặc thư viện mà bạn đã thêm vào dự án.

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

}

Hi vọng điêu nay co ich.


1

Nếu sau khi bạn thêm Mô-đun Thư viện Android và bạn gặp lỗi này.
Bạn có thể khắc phục bằng cách xóa đơn giản android:label="@string/app_name"khỏi Mô-đun Thư viện AndroidAndroidManifest.xml của mình


1

Mở bảng điều khiển lớp của bạn, sau đó bạn thấy lớp gợi ý bạn thêm dòng cụ thể (Giống như: tools: thay = "android: allowBackup" hoặc tools: thay = "android: nhãn", v.v.). Thêm dòng đó vào tệp kê khai của bạn dưới thẻ và đồng bộ hóa lớp, đó là nó.


1

Trong trường hợp của tôi, điều đó đã xảy ra khi để một số bộ lọc ý định trống bên trong thẻ Activity

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

            <intent-filter>

            </intent-filter>

    </activity> 

Vì vậy, chỉ cần loại bỏ chúng đã giải quyết vấn đề.

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

0

Là một người mới sử dụng Android Studio, trong trường hợp của tôi, tôi đã chuyển một dự án hiện có từ Eclipse sang Android Studio và thấy rằng có một định nghĩa trùng lặp về một hoạt động trong Manifest.xml của tôi đã được Eclipse chọn là hiển thị như một lỗi Gradle.

Tôi đã tìm thấy điều này bằng cách vào Gradle Console (phía dưới bên phải màn hình).


0

Đã xảy ra với tôi hai lần khi tôi khúc xạ (Đổi tên bằng SHIFT + F6) tên của một trường trong các tệp của chúng tôi và nó yêu cầu bạn thay đổi nó ở mọi nơi và chúng tôi không chú ý thay đổi tên ở mọi nơi. Ví dụ: nếu bạn có một tên biến "id" trong lớp Java của mình và bạn đổi tên nó bằng SHIFT + F6. Nếu bạn không chú ý đến hộp thoại tiếp theo sẽ hỏi bạn bất cứ nơi nào nó sẽ thay đổi id và bạn đánh dấu chọn kiểm tra tất cả, nó sẽ thay đổi tất cả id trong tệp bố cục của bạn từ giá trị mới.


0

Đây là lỗi rất đơn giản chỉ xảy ra khi bạn xác định bất kỳ hoạt động nào gọi hai lần trong tệp mainifest.xml Ví dụ như

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

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



//solution:use only one 

0

Đặt phần này vào cuối bản dựng mô-đun ứng dụng của bạn.

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

từ đây


0

Bổ sung câu trả lời Phan Văn Linh. Tôi đã xóa những dòng này:

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

0

Chỉ cần di chuyển sang Androidx như được hiển thị ở trên và sau đó đặt phiên bản sdk tối thiểu thành 26 ... không có nghi ngờ gì điều này hoạt động hoàn hảo


0

Các hack sau hoạt động:

  1. Thêm xmlns:tools="http://schemas.android.com/tools"dòng trong thẻ kê khai
  2. Thêm tools:replace="android:icon,android:theme,android:allowBackup,label,name" vào thẻ ứng dụng

0

Tôi đã giải quyết điều này bằng cách xóa android:replacethẻ


0

Trong trường hợp của tôi, tôi đã sử dụng một số chú thích từ thư viện jetbrains. Tôi đã loại bỏ những chú thích và phụ thuộc và nó hoạt động tốt.

Vì vậy, vui lòng kiểm tra các thư viện trong mã android và phụ thuộc một cách cẩn thận.


0

Nếu bạn đang sử dụng nhiều manifestPlaceholdermục trong build.gradletệp của mình , bạn phải thêm chúng dưới dạng các thành phần mảng, thay vì các mục riêng biệt.

Ví dụ: điều này sẽ gây ra lỗi xây dựng hoặc lỗi biên dịch: "java.lang.R nbException: Manifest sáp nhập không thành công với nhiều lỗi":

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

Điều này sẽ sửa lỗi:

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

0

Điều này là do bạn đang sử dụng thư viện Tài liệu mới với Thư viện Hỗ trợ cũ.

Bạn phải di chuyển android.supportđến androidxđể sử dụng com.google.android.material.

Nếu bạn đang sử dụng android studio v 3.2 trở lên, chỉ cần

đi đến cấu trúc lại ---> DI CHUYỂN ĐẾN ANDROID X.

Làm một bản sao lưu dự án của bạn.


0

Tôi đã sử dụng FirebaseUI Librarycùng với Facebook SDK Library, điều này gây ra cho tôi vấn đề.

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

Và từ [đây] [1], tôi đã thoát khỏi vấn đề này.

Với latest updatecác thư viện FirebaseUI , phiên bản trước của Facebook SDK cũng là một phần của nó.

Nếu bạn đang sử dụng cả hai thư viện, vui lòng xóa Thư viện SDK Facebook .

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

CẬP NHẬT

Từ các Android Studio 3.0phiên bản mới hơn, app.gradletập tin được yêu cầu sử dụng implementationhoặc apithay vì compilethêm các phụ thuộc vào ứng dụng.


0

Sau khi thấy câu trả lời của CLIFFORD để xem lỗi, điều giúp tôi giải quyết vấn đề này là đổi tên 'android: namex' thành 'android: name' trong thẻ hành động của bộ lọc ý định. Trong trường hợp nếu cùng một giải pháp giúp người khác.

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

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.