预编译的.so库在Activity中无法识别

时间:2015-11-24 23:00:22

标签: android android-studio android-ndk

我获得了一个名为libremote_client.so的.so库

该库有一个名为getInstance的函数,它返回一个Object类型IRemote。 我已将.so文件复制到

中的AndroidStudio项目中

应用程序/ SRC /主/ jniLibs / armeabi / libremote_client.so

在我的活动中,我在课程级别声明了以下内容

public native IRemote getInstance();

不幸的是,AndroidStudio无法解析引用类型IRemote。我显然没有在我的项目中正确包含预构建的.so文件。

我想我可能需要在Gradle中添加一些依赖项,但我不知道从哪里开始。

下面是我的gradle文件,任何人都可以告诉我如何正确地将.so文件添加到我的项目中,以便我的Activity可以解析IRemote引用类型吗?

提前致谢

马特

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"



    defaultConfig {
        applicationId "devreach.co.uk.devreach"
        minSdkVersion 19
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            debuggable true
        }
    }
}

dependencies {
    compile fileTree(dir: 'jniLibs', include: ['*.jar'])

    compile 'com.android.support:appcompat-v7:22.2.0'
    compile files('libs/sqlcipher.jar')
    compile project(':ScreenSharingSDK')
    compile files('libs/joda-time-2.4.jar')
    compile files('libs/gcm.jar')
    compile project(':edm')
    compile project(':kcm')
    compile project(':rc')

}

2 个答案:

答案 0 :(得分:1)

将此行添加到gradle:

sourceSets {
    main {
        jni.srcDirs = [] 
        jniLibs.srcDir 'src/main/jniLibs'
    }
}

答案 1 :(得分:0)

无论谁给你.so文件忘了给你相关的Java文件,包括IRemote和更多。如果没有IRemote.java接口类,您或编译器如何知道可以调用哪些方法以及返回哪些数据?

我也注意到你有这条线

compile fileTree(dir: 'jniLibs', include: ['*.jar'])

这不是必需的,可以删除。