Компиляция AllJoyn приводит к UnsatisfiedLinkError

Возникает проблема всякий раз, когда я создаю свой проект на своем телефоне (Android 4.4.2).

Я получаю сообщение об ошибке UnsatisfiedLinkError, и мне кажется, что библиотека alljoyn еще не загружена. Единственное, что я добавил, это static { System.loadLibrary("alljoyn_java"); } перед методом onCreate() действия Main.

Вот файл build.gradle для справки:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.3"
    defaultConfig {
        applicationId "secret.secret.secret"
        minSdkVersion 19
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile files('src/main/java/jniLibs/alljoyn.jar')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    testCompile 'junit:junit:4.12'
}

Каталог проектов версия Android Studio

Возможно, я использую не тот Android SDK. В чем может быть проблема? Спасибо за помощь!


person systemplado    schedule 05.11.2016    source источник


Ответы (2)


Я следовал инструкциям здесь, за исключением того, что я разместил файл jar внутри папки app/libs/.

Один хороший момент, который я вижу здесь, заключается в том, что файл jar может быть где угодно, но файл .so должен быть в app/src/main/jniLibs/armeabi/. Я не знаю причину этого - может кто-нибудь объяснить, почему?

person systemplado    schedule 05.11.2016

Местоположение app/src/main/jniLibs/armeabi/ используется по умолчанию. Вы можете указать пользовательское местоположение, добавив:

sourceSets.main {
        jniLibs.srcDir 'your/custom/location' 
}

to

android {
   ...
}
person Lino    schedule 05.11.2016