Найдено несколько файлов с независимым от ОС путем «AndroidManifest.xml» - PullRequest
2 голосов
/ 04 октября 2019

У меня есть многомодульный проект. После того, как я обновил Gradle до 5.4.1 и Android Gradle плагин до 3.5.1 версии, я начал получать следующую ошибку:

Execution failed for task ':Android.OTT.Framework:mergeDebugJavaResource'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > More than one file was found with OS independent path 'AndroidManifest.xml'

Вот build.gradle этого модуля:

buildscript {
    rootProject.ext {
        support_version = '28.0.0'
        retrofit_version = '2.6.0'
        kodein_version = '6.2.1'
        butterknife_version = '9.0.0'
        joda_time_version = '2.10.2'
        rxjava_version = '2.2.10'
        rxandroid_version = '2.1.1'
        nanohttpd_version = '2.3.1'
        gson_version = '2.8.5'
        okio_version = '2.2.2'
        annimon_stream_version = '1.2.1'
        leak_canary_version = '1.6.3'
        ok_http_version = '3.12.1'
        lifecycle_version = '1.1.1'

        mockito_version = '2.28.2'
        mockito_kotlin_version = '2.1.0'
        kluent_version = '1.41'
    }

    repositories {
        google()
        maven { url 'https://maven.fabric.io/public' }
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
        maven { url 'https://plugins.gradle.org/m2/' }
    }

    dependencies {
        // These docs use an open ended version so that our plugin
        // can be updated quickly in response to Android tooling updates

        // We recommend changing it to the latest version from our changelog:
        // https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin
        classpath 'io.fabric.tools:gradle:1.+'

        classpath "com.jakewharton:butterknife-gradle-plugin:$butterknife_version"
    }
}

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'realm-android'
apply plugin: 'com.jakewharton.butterknife'

androidExtensions {
    experimental = true
}

repositories {
    google()
    maven { url 'https://maven.fabric.io/public' }
    mavenCentral()
    jcenter()
    maven { url "https://jitpack.io" }
    maven { url "https://dl.bintray.com/deltatre/exoplayer" }
}

allprojects {
    repositories {
        google()
        flatDir {
            dirs './divaLibs'
        }
        maven {
            url = "https://oss.sonatype.org/content/repositories/snapshots/"
        }
    }
}

android {
    compileSdkVersion 28
    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            consumerProguardFiles 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'jsr305_annotations/Jsr305_annotations.gwt.xml'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    testOptions {
        unitTests.returnDefaultValues = true
    }
    dataBinding {
        enabled = true
    }
}

realm {
    syncEnabled = true
}

dependencies {
    api project(':Android.OTT.OfflineVideo')
    api project(':Android.OTT.D3Foundation')

    // START DIVA PLAYER
    implementation fileTree(include: ['*.jar', '*.aar'], dir: 'divaLibs')
    api files('divaLibs/divaandroidlib-release-4.7.2.aar')
    implementation 'com.deltatre.android.exoplayer:exoplayer:2.9.5.1'
    implementation 'com.github.davibe:MD360Player4Android:dev-SNAPSHOT'
    implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.10.2'

    api "com.google.code.gson:gson:$gson_version"
    api "joda-time:joda-time:$joda_time_version" // needed also by Diva
    implementation 'com.google.android.gms:play-services-base:16.1.0'
    implementation 'com.google.android.gms:play-services-ads:17.2.1'
    implementation 'com.google.android.gms:play-services-analytics:16.0.8'
    implementation 'com.google.android.gms:play-services-cast:16.2.0'
    implementation 'com.google.android.gms:play-services-cast-framework:16.2.0'
    implementation files('divaLibs/comscore-3.1502.26.jar')
    implementation 'com.google.vr:sdk-videowidget:1.180.0'

    //Firebase
    api 'com.google.firebase:firebase-messaging:18.0.0'
    api 'com.google.firebase:firebase-core:16.0.9'
    implementation 'com.google.android.gms:play-services-tagmanager:16.0.8'
    // Urban Airship - FCM
    api 'com.urbanairship.android:urbanairship-fcm:10.0.2'
    // Support
    api "com.android.support:design:$support_version"
    api "com.android.support:cardview-v7:$support_version"
    api "com.android.support:recyclerview-v7:$support_version"
    api "com.android.support:support-v4:$support_version"
    api "com.android.support:mediarouter-v7:$support_version"
    api "com.android.support:appcompat-v7:$support_version"
    api "com.android.support:support-v13:$support_version"
    api "com.android.support:customtabs:$support_version"
    api 'com.android.support.constraint:constraint-layout:1.1.3'
    api 'com.android.support:multidex:1.0.3'

    implementation "android.arch.lifecycle:viewmodel:$lifecycle_version"
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"

    // Analytics
    api('com.crashlytics.sdk.android:answers:1.4.7@aar') {
        transitive = true
    }
    api('com.crashlytics.sdk.android:crashlytics:2.10.1@aar') {
        transitive = true
    }
    // Ui
    api 'me.relex:circleindicator:1.2.2@aar'
    api 'com.github.bumptech.glide:glide:4.9.0'
    implementation 'com.afollestad.material-dialogs:core:0.9.5.0'
    // RETROFIT
    api "com.squareup.retrofit2:retrofit:$retrofit_version"
    api "com.squareup.retrofit2:converter-gson:$retrofit_version"
    api "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version"
    // ok http
    implementation "com.squareup.okhttp3:okhttp:$ok_http_version"
    implementation "com.squareup.okhttp3:logging-interceptor:$ok_http_version"
    // Rx
    api "io.reactivex.rxjava2:rxandroid:$rxandroid_version"
    api "io.reactivex.rxjava2:rxjava:$rxjava_version"
    api 'com.jakewharton.rxbinding2:rxbinding:2.2.0'
    // IoC
    api "org.kodein.di:kodein-di-generic-jvm:$kodein_version"
    api "org.kodein.di:kodein-di-framework-android-support:$kodein_version"
    // Usefull
    api "com.annimon:stream:$annimon_stream_version"
    api "com.jakewharton:butterknife:$butterknife_version"
    kapt "com.jakewharton:butterknife-compiler:$butterknife_version"
    api 'com.jakewharton.timber:timber:4.7.1'
    implementation "com.squareup.okio:okio:$okio_version"
    implementation "org.nanohttpd:nanohttpd:$nanohttpd_version"
    implementation 'online.devliving:securedpreferencestore:0.7.4'
    api 'com.jakewharton:process-phoenix:2.0.0'

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    // TV
    api "com.android.support:leanback-v17:$support_version"

    // Leak Canary
    debugImplementation "com.squareup.leakcanary:leakcanary-android:$leak_canary_version"
    releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$leak_canary_version"
    debugImplementation "com.squareup.leakcanary:leakcanary-support-fragment:$leak_canary_version"

    testImplementation 'junit:junit:4.12'
    testImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:$mockito_kotlin_version"
    testImplementation "org.mockito:mockito-inline:$mockito_version"
    testImplementation "org.amshove.kluent:kluent-android:$kluent_version"

    // Exomedia
    implementation 'com.devbrackets.android:exomedia:4.3.0'

    androidTestImplementation "org.mockito:mockito-android:$mockito_version"
}

Вот build.gradle проекта:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        google()
        maven { url 'https://maven.fabric.io/public' }
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
        maven { url 'https://plugins.gradle.org/m2/' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.1'
        classpath 'io.fabric.tools:gradle:1.+'
        classpath 'io.realm:realm-gradle-plugin:5.11.0'
        classpath 'com.google.gms:google-services:4.3.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

build.gradle модуля Android.OTT.OfflineVideo:

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'realm-android'

buildscript {
    rootProject.ext {
        jsoup_version = '1.12.1'
    }
}


android {
    compileSdkVersion 28
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            consumerProguardFiles 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'jsr305_annotations/Jsr305_annotations.gwt.xml'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
}

realm {
    syncEnabled = true
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "io.reactivex.rxjava2:rxjava:$rxjava_version"
    implementation "com.annimon:stream:$annimon_stream_version"
    implementation "com.google.code.gson:gson:$gson_version"
    implementation "org.nanohttpd:nanohttpd:$nanohttpd_version"
    implementation "org.jsoup:jsoup:$jsoup_version"
    implementation "joda-time:joda-time:$joda_time_version"
    implementation "com.android.support:support-annotations:$support_version"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

sourceCompatibility = "1.8"
targetCompatibility = "1.8"

build.gradle модуля Android.OTT.D3Foundation:

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'

android {
    compileSdkVersion 28

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            consumerProguardFiles 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation "com.android.support:support-annotations:28.0.0"//todo
    testImplementation 'junit:junit:4.12'
    testImplementation 'org.amshove.kluent:kluent-android:1.41'
    testImplementation 'com.nhaarman.mockitokotlin2:mockito-kotlin:2.1.0'
    testImplementation "org.mockito:mockito-inline:2.23.4"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
repositories {
    mavenCentral()
}

Я видел много вопросов, подобных этому один . Но это не мой случай, я думаю, потому что я не могу просто игнорировать AndroidManifest.xml файлы. Заранее спасибо!

Ответы [ 4 ]

1 голос
/ 11 октября 2019

Я получил ту же ошибку после наконец обновления до AndroidX. Я намекал на некоторые другие ответы, чтобы вернуть некоторые библиотеки к их последним известным рабочим версиям. Самое главное, плагин для Android Gradle. У меня та же версия, что и у вас:

classpath 'com.android.tools.build:gradle:3.5.1'

Я вернул ее к своей последней известной стабильной версии, которая для меня была 3.4.0.

После синхронизациипроект, а затем очистить его заново, компилятор на самом деле предоставил значимое сообщение об ошибке, указывающее мне на что-то совершенно не связанное с любым из моих AndroidManifest.xml файлов. Другими словами, я получил фактическую проблему, описанную или связанную с файлом. С этого момента это было так же просто, как выявить проблему (обычно подчеркнутую красным) и исправить ее.

Поэтому я предлагаю вам выяснить проблему с более старой версией плагина для Android, например

classpath 'com.android.tools.build:gradle:3.4.0'

затем вернитесь назад (или сохраните старую) после того, как, наконец, найдете и исправите проблему.

0 голосов
/ 10 октября 2019

Я пытался повторить ваши проблемы. Из того, что я понял, я понял, что это проблема библиотек Android.OTT.OfflineVideo и Android.OTT.D3Foundation, которые вы использовали в своем приложении для функций видео. Некоторые из тех же файлов, которые есть в описанной библиотеке, конфликтуют с библиотеками, которые вы использовали для функции видео. Это приводит к сбою объединения.

Попробуйте выполнить одно из следующих действий:

  1. Очистите / пересоберите ваш проект.
  2. Проверьте, соответствует ли имя пакета вашемуДействия соответствуют указанным в манифесте.
  3. Откройте файл manifest.xml в Android Studio. Внизу вы можете найти вкладку «объединенный манифест», которая может дать вам больше информации.

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

api project(':Android.OTT.OfflineVideo')
api project(':Android.OTT.D3Foundation')

implementation fileTree(include: ['*.jar', '*.aar'], dir: 'divaLibs')
api files('divaLibs/divaandroidlib-release-4.7.2.aar')
implementation 'com.deltatre.android.exoplayer:exoplayer:2.9.5.1'
implementation 'com.github.davibe:MD360Player4Android:dev-SNAPSHOT'
implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.10.2'

// Exomedia
implementation 'com.devbrackets.android:exomedia:4.3.0'

Пожалуйста, обратите внимание *, поскольку вы знаете, что это проблема слияния, и, поскольку у меня есть ограничения в тиражировании ваших проблем, я предложил лишь некоторые способы решения вашей проблемы. «Я знаю, что это не решение», все еще надеюсь, что это работает :) Спасибо.

0 голосов
/ 11 октября 2019

Очистите проект, а затем сделайте недействительным кеш и перезапустите студию или, если это не сработает, понизьте класс до версии, затем синхронизируйте и после завершения синхронизации верните его к последней версии и снова выполните синхронизацию. Надеюсь, что это решит вашу проблему

0 голосов
/ 06 октября 2019

Исходя из того, где произошла ошибка - в задаче mergeDebugJavaResource gradle и в сообщении об ошибке о нескольких манифестах Android, я могу предположить, что проблема заключается в том, что существует несколько манифестов (например, один для отладки и один для производства) ине существует правил слияния манифеста .

Я сталкивался с подобной проблемой несколько раз, и каждый раз это происходило из-за отсутствия маркеров правил слияния . Обычно мне требовалось remove или replace некоторых значений в моем главном манифесте, например:

<activity android:name="com.example.ActivityOne"
    android:screenOrientation="portrait"
    tools:remove="android:windowSoftInputMode">

<activity android:name="com.example.ActivityOne"
    android:theme="@newtheme"
    android:exported="true"
    android:screenOrientation="portrait"
    tools:replace="android:theme,android:exported">

, он всегда работал.

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

Подробнее в документации 1020 *

Хотя это не точный ответ на ваш вопрос, я надеюсь, что это поможет.

...