如何将另一个项目的.so文件包含到我们自己的项目中?

时间:2017-11-14 12:29:45

标签: android android-studio java-native-interface

我有一个项目的.so文件,但现在我想在我的项目中包含该文件。我尝试了所有的可能性。我使用以下样本

task copyJniLibs(type: Copy) {
    from 'libs/armeabi'
    into 'src/main/jniLibs/armeabi'
}
tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn(copyJniLibs)
}
clean.dependsOn 'cleanCopyJniLibs'

并在jnilibs文件夹中复制了.so文件,如同在几个答案中建议但仍然得到与

相同的错误
 java.lang.UnsatisfiedLinkError: Native method not found: com.example.manvish.gpio.MainActivity.setGpioDataHigh:(I)Z

1 个答案:

答案 0 :(得分:1)

您不需要所有这些gradle任务。设置

就足够了
android {
    sourceSets {
        main {
            jniLibs.srcDir 'libs'
        }
    }
}

但是,问题是你在libs/armeabi中使用的本机库是否实现了本机方法。如果是,则导出具有特制名称Java_com_example_manvish_gpio_MainActivity_setGpioDataHigh的函数。