2017-07-06 6 views
2

J'utilise libusb dans mon application android. Lorsque j'essaye de construire la bibliothèque native libusb alors je reçois ci-dessous le message d'erreur, fichiers * .so générés.Plus d'un fichier a été trouvé avec le chemin indépendant du système d'exploitation 'lib/x86/libusb.so'

Error:Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForDebug'. More than one file was found with OS independent path 'lib/x86/libusb.so'

enter image description here

build.gradle

import org.apache.tools.ant.taskdefs.condition.Os 

apply plugin: 'com.android.application' 

apply plugin: 'kotlin-android' 

apply plugin: 'kotlin-android-extensions' 

android { 
    compileSdkVersion 26 
    buildToolsVersion "26.0.0" 
    defaultConfig { 
     applicationId "com.williams.libusbpoc" 
     minSdkVersion 21 
     targetSdkVersion 26 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    externalNativeBuild { 
     ndkBuild { 
      path 'src/main/jni/Android.mk' 
     } 
    } 

    sourceSets.main { 
     jniLibs.srcDir 'src/main/libs' 
     jni.srcDirs = [] //disable automatic ndk-build call 
    } 

    // call regular ndk-build(.cmd) script from app directory 
    task ndkBuild(type: Exec) { 
     if (Os.isFamily(Os.FAMILY_WINDOWS)) { 
      commandLine 'ndk-build.cmd', '-C', file('src/main').absolutePath 
     } else { 
      commandLine 'ndk-build', '-C', file('src/main').absolutePath 
     } 
    } 

    tasks.withType(JavaCompile) { 
     compileTask -> compileTask.dependsOn ndkBuild 
    } 
} 

dependencies { 
    implementation fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestImplementation ('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" 
    implementation 'com.android.support:appcompat-v7:26.0.0-beta2' 
    testImplementation 'junit:junit:4.12' 
    implementation 'com.android.support.constraint:constraint-layout:1.0.2' 
    compile "org.jetbrains.anko:anko-appcompat-v7-commons:$anko_version" 
} 

Je suis sur la machine windows. Est-ce que quelqu'un sait ce qui pourrait être le problème?

Répondre

6

J'ai supprimé le code jniLibs.srcDir 'src/main/libs' à l'intérieur du bloc sourceSets.main. Il créait des fichiers * .so deux fois.

sourceSets.main { 
    jniLibs.srcDir 'src/main/libs' 
    jni.srcDirs = [] //disable automatic ndk-build call 
} 
+0

Merci Nancy .. Cela a fonctionné sur mon application –

+0

N'a pas fonctionné pour moi: Erreur: (25, 1) Un problème est survenu lors de l'évaluation du projet ': app'. > Impossible de convertir l'objet 'src/main/jni/lib' avec la classe 'java.lang.String' en classe 'java.lang.Iterable' – Paamand

3

J'ai rencontré une erreur similaire lors de l'exécution de mon application après la migration vers Android Studio 3.0. Une construction propre a résolu le problème.