无法在android studio中引用.so文件

时间:2016-12-13 11:27:22

标签: java android lua android-ndk

所以我想在Android中集成CLE,因此我必须添加一些.so文件。我正在关注here

的教程

在集成Star库之前一切正常,但是当我运行程序时,我得到以下异常:

Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/data/com.srplab.starcore/lib/libstar_java.so" not found

现在要包含这些.so文件我为3个架构创建了一个文件夹jniLibs并放置了.so文件:

enter image description here

我已将以下代码行添加到build.gradle:

 sourceSets
            {
                main
                        {

                            jniLibs.srcDirs = ['src/main/jnilibs']

                        }
            }

然而,当我运行以下代码时再次:

try {
            //System.loadLibrary("mysharedlibrary");
            System.load("/data/data/"+getPackageName()+"/libstar_java.so");
        } catch (UnsatisfiedLinkError use) {
            Log.e("JNI", "WARNING: Could not load libmysharedlibrary.so");
            use.printStackTrace();
        }

我收到异常,意味着.so文件没有加载。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

你的" armeabiv7a "必须将文件夹重命名为" armeabi-v7a "。 还有拼写错误:

jniLibs.srcDirs = ['src/main/jnilibs']

你的文件夹是大L:

jniLibs.srcDirs = ['src/main/jniLibs']

顺便说一下," src / main / jniLibs "默认情况下用于本机库,您不必在gradle脚本中指定它
上面没有完整的代码块,但是您是否从静态初始化程序加载库?喜欢:

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

看看你的apk,确保你的lib成功收集。您可以在app/build/outputs/apk/

看到它