2015-03-02 2 views
0

Я понимаю, что это задано много раз, но я провел тщательное исследование перед отправкой моего запроса.java.lang.UnsatisfiedLinkError: Не удалось загрузить с загрузчика. Dalvik.system.PathClassLoader findLibrary возвращается null

Я обновил Android Studio до последней версии от 2 марта 2015 года, версия 1.1.0. Я думаю, что все еще не упаковывает .so файлы самостоятельно.

Я написал папку NewNDK.c in/jni. Ran скрипт ndk-build и .so были созданы в/libs. Согласно предложению в одном из сообщений, я модифицировал libs в lib.

Даже тогда я получаю java.lang.UnsatisfiedLinkError: Не удалось загрузить с загрузчика. Dalvik.system.PathClassLoader findLibrary возвратил ошибку null.

В сообщениях не говорится о файлах для изменения. Я новичок в Android, прошу вас помочь.

Я сузил проблему до: 1. Грейдл не упаковывает 2. Сценарии градлей должны быть изменены.

build.gradle (модуль: приложение), как показано ниже:

применить плагин: '' com.android.application

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "com.example.raghu.newndk" 
     minSdkVersion 17 
     targetSdkVersion 17 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:21.0.3' 
} 

build.gradle (проект), как показано ниже:

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.1.0' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

Пожалуйста, дайте мне знать, что не хватает.

Спасибо!

ответ

3

As per suggestion in one of the posts, I modified libs to lib.

Это не имеет смысла делать это. lib - это папка, в которой ваши файлы .so войдут в APK, но этот шаг будет обрабатываться непосредственно инструментами упаковки, если ваш проект будет правильно организован.

Внутри проект Android студии, вы должны поставить .so файлов внутри jniLibs/<ABI> где <ABI> является целевой архитектурой каждого .so файла (armeabi, x86 ... так же, как они генерируются от NDK внутри libs).

Таким образом, вы можете переименовать папку libs в jniLibs или настроить сборку, так что ваш .so файлы из libs будут непосредственно интегрированы:

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

, который мне очень помог, спасибо – Chris623

0

Открыть свойство проекта> перейти к опции Andriod> выберите Advance tab> просто снимите флажок «armeabi», «armeabi-v7a», «arm64-v8a» и сохраните проект.

Ошибка будет удалена.

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