Ошибка: com.android.builder.merge.DuplicateRelativeFileException: найдено несколько файлов с независимым от ОС путем - PullRequest
0 голосов
/ 22 октября 2018

Я использую https://github.com/jiangdongguo/AndroidUSBCamera в моем приложении.Я попытался скомпилировать библиотеку самостоятельно с помощью примера приложения, и она прекрасно работает, но после импорта в мой проект я столкнулся с ошибкой в ​​названии вопроса.Полная трассировка стека:

FAILURE: сборка не удалась с исключением.

  • Что пошло не так: выполнение задачи не выполнено ': app: transformNativeLibsWithMergeJniLibsForDebug'.

    Найдено более одного файла с независимым от ОС путем 'lib / armeabi / libjpeg-turbo1500.so'

  • Попробуйте: Выполнить с -опция отладки, чтобы получить больше вывода журнала.Запустите с параметром --scan, чтобы получить полную информацию.

  • Исключение составляет: org.gradle.api.tasks.TaskExecutionException: сбой выполнения для задачи ': app: transformNativeLibsWithMergeJniLibsForDebug'.в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions (ExecuteActionsTaskExecuter.java:100) в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute:.api.internal.tasks.execution..tasks.execution.ResolveTaskOutputCachingStateExecuter.execute (ResolveTaskOutputCachingStateExecuter.java:54) в org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute.g.t..SkipEmptySourceFilesTaskExecuter.execute (SkipEmptySourceFilesTaskExecuter.java!)выполнить (SkipOnlyIfTaskExecuter.java:54) в org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute (ExecuteAtMostOnceTaskExecuter.java:43) в org.graex.ecuk.Exceptionjava: 34) в org.gradle.execution.taskgraph.DefaultTaskGraphExecuter $ EventFiringTaskWorker $ 1.run (DefaultTaskGraphExecuter.java:248) в org.gradle.internal.progress.DefaultBuildOperationExecutor $ RunnableBuildOperationjec33.Exj.Exg.gradle.internal.progress.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:328) в org.gradle.internal.progress.DefaultBuildOperationExecutor.execute (DefaultBuildOperationExecutor.java:199) по адресу org.gradle.internal.progress.DefaultBuildOperationExecutor.run (DefaultBuildOperationExecutor.java:110) по адресу org.gradle.execution.taskgraph.DefaultTaskGraphExecuask.Gate_GameTecTF ()в org.gradle.execution.taskgraph.DefaultTaskGraphExecuter $ EventFiringTaskWorker.execute (DefaultTaskGraphExecuter.java:230) в org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ TaskExecutor.works.tas.grag.DefaultTaskPlanExecutor $ TaskExecutorWorker.access $ 200 (DefaultTaskPlanExecutor.java:79) в org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ TaskExecutorWorker $ 1.execute (DefaultTaskPlanExec $ 1).выполнить (DefaultTaskPlanExecutor.java:98) в org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute (DefaultTaskExecutionPlan.javа: 626) вorg.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask (DefaultTaskExecutionPlan.java:581) в org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ TaskExecutorWorker.run (DefaultTasternalj.con.ecutor.gr)CatchAndRecordFailures.onExecute (ExecutorPolicy.java:63) в org.gradle.internal.concurrent.ManagedExecutorImpl $ 1.run (ManagedExecutorImpl.java:46) в java.util.concurrent.ThreadPoolExecutor.run.javautil.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) в org.gradle.internal.concurrent.ThreadFactoryImpl $ ManagedThreadRunnable.run (ThreadFactoryImpl.java:55) в java.lang.Thjr.745) Причина: com.android.builder.merge.DuplicateRelativeFileException: найдено более одного файла с независимым от ОС путем 'lib / armeabi / libjpeg-turbo1500.so' на com.android.builder.merge.StreamMergeAlgorithms.lambda $ acceptOnlyOne2 доллара (StreamMergeAlgorithms.java:75) на com.android.builder.merge.StreamMergeAlgorithms.lambda $ select $ 3 (StreamMergeAlgorithms.java:100) в com.android.builder.merge.IncrementalFileMergerOutputs $ 1.create (IncrementalFileMergerOutputs.java:86) в com.android.Outate.MilederMerder.Merge.create (DelegateIncrementalFileMergerOutput.java:61) по адресу com.android.build.gradle.internal.transforms.MergeJavaResourcesTransform $ 1.create (MergeJavaResourcesTransform.java:379) по адресу com.android.builder.merge.IncrementalFileMergFF) в com.android.builder.merge.IncrementalFileMerger.mergeChangedInputs (IncrementalFileMerger.java:190) в com.android.builder.merge.IncrementalFileMerger.merge (IncrementalFileMerger.java:77) в com.android.build.grain.transforms.MergeJavaResourcesTransform.transform (MergeJavaResourcesTransform.java:411) по адресу com.android.build.gradle.internal.pipeline.TransformTask $ 2.call (TransformTask.java:222) по адресу com.android.build.gradle.internal.pline$ 2.call (TransformTask.java:218) на com.android.builder.profile.ThreadRecorder.record (ThreadRecorder.java:102) на com.android.build.gradle.internal.pipeline.TransformTask.transform (TransformTask.java:213) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImplang.jpg_jj.Method.invoke (Method.java:498) в org.gradle.internal.reflect.JavaMethod.invoke (JavaMethod.java:73) в org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute (IncrementalTava): 46) в org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute (StandardTaskAction.java:39) в org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute (StandardTaskAction) javaorg.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter $ 1.run (ExecuteActionsTaskExecuter.java:121) в org.gradle.internal.progress.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:336) по адресу org.gradle.internal.progress.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute.gresse.OggDefaultBuildOperationExecutor.java:199) в org.gradle.internal.progress.DefaultBuildOperationExecutor.run (DefaultBuildOperationExecutor.java:110) в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.extea.Executer.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions (ExecuteActionsTaskExecuter.java:92) ... еще 32

Существует четыре подкаталога jniLibs: arm64-v8a, armeabi, armeabi-v7a, x86;каждый из них содержит четыре файла .so: libjpeg-turbo1500.so, libusb100.so, libuvc.so, libUVCCamera.so Теперь, если я исключу все файлы .so с помощью exclude 'lib / armeabi / # filename # .so', проект создает и запускаетбез проблем, но функциональность камеры не будет работать, потому что она реализована в ndk.

build.gradle для библиотеки выглядит следующим образом:

apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
group = 'com.github.jiangdongguo'

android {
    compileSdkVersion 25
    buildToolsVersion '26.0.2'

    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'META-INF/project.properties'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/builddef.lst'
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/maven/commons-lang/commons-lang/pom.xml'
        exclude 'META-INF/maven/commons-lang/commons-lang/pom.properties'
        exclude 'META-INF/mailcap.default'
        exclude 'typedefs.txt'
        exclude 'META-INF/maven'
    }

    dexOptions {
        preDexLibraries = false
        javaMaxHeapSize "5g"
    }

}


dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation 'com.android.support:appcompat-v7:25.3.1'
    testCompile 'junit:junit:4.12'
    implementation("com.serenegiant:common:${commonLibVersion}") {
        exclude module: 'support-v4'
    }
}

Я уже пробовал исключать много метаданныхinfs, используя pickFirst для всех файлов .so, перепробовал все группы * .exclude: 'com.android.support', модуль: 'support-v7', попытался удалить файл реализации дерева.Я сделал недействительными наличные / перезапустить, очистить проект, пересобрать проект, ничего не получилось.Есть ли что-нибудь еще, что я мог бы попробовать?

Мой уровень доступа к проекту:

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
        google()
    }
    dependencies {
        classpath 'com.google.gms:google-services:2.1.0'
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        mavenCentral()
        maven { url "https://jitpack.io" }
        maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
        google()
        maven { url 'http://raw.github.com/saki4510t/libcommon/master/repository/' }
    }
}



ext {
    commonLibVersion= '1.5.20'
    compileSdkVersion = 27
    buildToolsVersion = '27.0.3'
    minSdkVersion = 21
    versionName = "1.7.0"
    versionCode = 1
    multiDexEnabled = true
}

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

И уровень приложения:: 1037 *

apply plugin: 'com.android.application'

android {
    signingConfigs {
        release {
            keyAlias 'alias_name'
            keyPassword 'Mine2017'
            storeFile file('release.keystore')
            storePassword 'Mine2017'
        }
        debug {
            keyAlias 'alias_name'
            keyPassword 'Mine2017'
            storeFile file('release.keystore')
            storePassword 'Mine2017'
        }
    }

    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig {
        applicationId "com.rit.andrey.service"
        minSdkVersion rootProject.ext.minSdkVersion
        versionCode rootProject.ext.versionCode
        versionName rootProject.ext.versionName
        multiDexEnabled rootProject.ext.multiDexEnabled
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
        }
    }
    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    //implementation files('libs/stickygridheaders.jar')
    implementation 'com.tonicartos:stickygridheaders:1.0.1'
    implementation 'org.osmdroid:osmdroid-android:5.5:release@aar'
    implementation project(':mmlib')
    implementation project(':usbSerialForAndroid-release')
    implementation 'commons-io:commons-io:2.5'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    }
    implementation project(':libstreaming')
    implementation project(':aemdriver-release')
    implementation 'com.android.support:appcompat-v7:25.3.0'
    implementation 'com.github.PhilJay:MPAndroidChart:v3.0.2'
    implementation 'com.jakewharton:butterknife:8.7.0'
    implementation 'com.google.guava:guava:16.0.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0'
    implementation 'com.android.support:recyclerview-v7:25.3.0'
    implementation 'com.google.android.gms:play-services-location:9.0.2'
    implementation 'com.android.support:design:25.3.0'

    //Logger
    implementation 'org.slf4j:slf4j-api:1.7.21'
    implementation 'com.github.tony19:logback-android-core:1.1.1-6'
    implementation('com.github.tony19:logback-android-classic:1.1.1-6') {
        // workaround issue #73
        exclude group: 'com.google.android', module: 'android'
    }
    implementation 'com.github.japgolly.android:svg-android:2.0.6'
    implementation project(path: ':utm')
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.github.jiangdongguo:AndroidUSBCamera:2.2.8'
    implementation project(':libcamera')
}

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'
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...