Я использую 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'
}
}
}
}