2016-12-21 3 views
1

Что-то случилось с моим Android Studio или моим gradle-wrapper или что-то, когда я нажал на обновление, и проект больше не строится.Сбой компоновщика при связывании специальной библиотеки .so

Это мой журнал ошибок:

Error:Execution failed for task ':app:myLibArm64-v8aDebugSharedLibrary'. 
A build operation failed. 
Linker failed while linking myLib.so. 
See the complete log at: file:///mypath/app/build/tmp/myLibArm64-v8aDebugSharedLibrary/output.txt 

output.txt говорит:

android-ndk/toolchains/aarch64-linux-android-4.9/prebuilt/darwin- 
x86_64/bin/../lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64- 
linux-android/bin/ld: cannot find -lopencv_java3 
collect2: error: ld returned 1 exit status 

Кроме того, здесь мой Gradle код:

model { 
    android { 
     compileSdkVersion = 23 
     buildToolsVersion = "23.0.3" 

     defaultConfig.with { 
      applicationId "my.app" 
      minSdkVersion.apiLevel = 16 
      targetSdkVersion.apiLevel = 23 
      versionCode 1 
      versionName "1.0" 
      vectorDrawables.useSupportLibrary = true 
     } 

     ndk { 
      moduleName = "MyApp" 
      cppFlags.add("-I${file(getOpenCVDir())}/sdk/native/jni/include".toString()) 
      cppFlags.add("-frtti") 
      cppFlags.add("-fexceptions") 
      cppFlags.add("-std=c++11") 
      ldLibs.addAll(["log", "opencv_java3"]) 
      stl = "gnustl_static" 
     } 

     abis { 
      create("arm64-v8a") { 
       ldFlags.add("-L${file(getOpenCVDir())}/sdk/native/libs/arm64-v8a".toString()) 
      } 
      create("armeabi") { 
       ldFlags.add("-L${file(getOpenCVDir())}/sdk/native/libs/armeabi".toString()) 
      } 
      create("armeabi-v7a") { 
       ldFlags.add("-L${file(getOpenCVDir())}/sdk/native/libs/armeabi-v7a".toString()) 
      } 
      create("mips") { 
       ldFlags.add("-L${file(getOpenCVDir())}/sdk/native/libs/mips".toString()) 
      } 
      create("mips64") { 
       ldFlags.add("-L${file(getOpenCVDir())}/sdk/native/libs/mips64".toString()) 
      } 
      create("x86") { 
       ldFlags.add("-L${file(getOpenCVDir())}/sdk/native/libs/x86".toString()) 
      } 
      create("x86_64") { 
       ldFlags.add("-L${file(getOpenCVDir())}/sdk/native/libs/x86_64".toString()) 
      } 
     } 
    } 
} 

Я на classpath 'com.android.tools.build:gradle-experimental:0.8.3' и Я использую distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip libopencv_java3.so находится в каждой папке, указанной в

Вещи я уже пробовал:

  • полностью деинсталлировать и переустановить Android Studio
  • Файл -> Invalidate кэши и Restart
  • ./gradlew чистый и строительство -> Clean Project
  • изменить версию ndk (я использовал r12 и r13)
  • изменить версию градиента назад до 2.10 и экспериментально до 0.7.0 как это было до
  • Revert проект предыдущей фиксации
  • тянуть и создать источник в другой проект

Еще одна вещь, чтобы отметить, точно такой же код работает на компьютере моего колледжа с той же Gradle и Android студии версии (2.2. 3)

ответ

0

Я решил проблему, которая была на самом деле действительно глупой, но я позволю всем, кто это знает. Моя папка SDK OpenCV была каким-то образом синхронизирована с моим хранилищем iCloud, и внезапно Android Studio не смогла получить доступ к уже имеющимся там файлам, и градлу не удалось собрать библиотеки для меня. Я переместил папку SDK в папку без синхронизации, и все снова заработало.