2015-06-26 3 views
1

Я пытаюсь загрузить собственные библиотеки в студии android. Мой проект строит и запускает, но выдает ошибку при попытке загрузить файл .so.Ошибка при загрузке Native Library в Android

Моя структура Проект:

enter image description here

И мой Gradle Файл:

import com.android.build.gradle.tasks.PackageApplication 

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.2.3' 
    } 
} 
apply plugin: 'com.android.application' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'com.nineoldandroids:library:2.4.0' 
    compile 'com.actionbarsherlock:actionbarsherlock:[email protected]' 
    compile 'com.android.support:support-v4:22.1.1' 
    compile fileTree(dir: 'libs', include: '*.jar') 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion '19.1.0' 
/* 
    signingConfigs { 
     release { 
      storeFile file(System.console().readLine("\n\$ Enter keystore path: ")) 
      storePassword System.console().readLine("\n\$ Enter keystore password: ") 
      keyAlias System.console().readLine("\n\$ Enter key alias: ") 
      keyPassword System.console().readLine("\n\$ Enter key password: ") 
     } 
    } 

    buildTypes { 
     release { 
      signingConfig signingConfigs.release 
     } 
    } 
*/ 
    getNdkDirectory() 

    defaultConfig { 
     minSdkVersion 10 
     targetSdkVersion 22 
    } 
    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 

     instrumentTest.setRoot('tests') 
    } 
    buildTypes { 
     debug { 
      debuggable true 
      jniDebuggable true 
     } 
    } 
} 



/* 
* JNI Hack for gradle - works alright, copies native libs over into build folder no problem 
* https://gist.github.com/khernyo/4226923 
*/ 

task copyNativeLibs(type: Copy) { 
    from(new File('libs')) { include '**/*.so' } 
    into new File(buildDir, 'native-libs') 
} 

tasks.withType(JavaCompile) { options.encoding = "UTF-8" } 

clean.dependsOn 'cleanCopyNativeLibs' 

tasks.withType(PackageApplication) { pkgTask -> 
    pkgTask.jniFolders = new HashSet<File>() 
    pkgTask.jniFolders.add(new File(projectDir, 'native-libs')) 
} 

Я пытаюсь загрузить файлы, такие как:

static { 
    System.loadLibrary("NativeAudio"); 
} 

Получаю следующее ошибка:

java.lang.UnsatisfiedLinkError: Couldn't load Plumble from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/mnt/asec/com.morlunk.mumbleclient-1/pkg.apk"],nativeLibraryDirectories=[/mnt/asec/com.morlunk.mumbleclient-1/lib, /vendor/lib, /system/lib, /system/lib/arm]]]: findLibrary returned null 

Я пробовал много refrences, но не смог решить проблему. Использование Android Studio и Gradle Версия: 1.2.3

+0

ваша библиотека скомпилирована для Intel, так что вы можете использовать ARM симулятор –

+0

есть вы пытаетесь импортировать его с Gradle? Я имею в виду: скомпилировать файлы ('libs/xxx.so') в вашей зависимой части –

+0

Я получаю только локальные зависимости Jar-типа. Не удается обработать: C: \ Users \ Administrator \ Desktop \ Plumble-Legacy-master \ libs \ x86 \ libPlumble.so – user3036123

ответ

1

В отличие от Eclipse с ADT, градиент с Android-плагином ищет исходные библиотеки в папке src/main/jniLibs по умолчанию.

Вы можете изменить эту папку в следующем наборе источника:

android { 
    sourceSets.main { 
     jniLibs.srcDir 'src/main/libs' 
    } 
} 
+0

Я добавил 'jniLibs.srcDirs = ['libs'], но не смог решить проблему issue' – user3036123

+0

Попробуйте удалить задачи, связанные с родными libs в конце файла сборки градиента. Я также предлагаю иметь отдельную папку для родных библиотек. –

+0

Не могли бы вы показать мне, как это сделать? – user3036123

Смежные вопросы