Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android studio中引用.so文件时遇到问题_Java_Android_Lua_Android Ndk - Fatal编程技术网

Java 在android studio中引用.so文件时遇到问题

Java 在android studio中引用.so文件时遇到问题,java,android,lua,android-ndk,Java,Android,Lua,Android Ndk,因此,我正在尝试将CLE集成到Android中,出于这个原因,我必须添加一些.So文件。我正在学习来自 在集成星形库之前,一切正常,但是当我运行该程序时,出现以下异常: Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/data/com.srplab.starcore/lib/libstar_java.so" not found 现在,为了包含这些.so文件,我创建了一个文件夹JNILBS,并放置了

因此,我正在尝试将CLE集成到Android中,出于这个原因,我必须添加一些.So文件。我正在学习来自

在集成星形库之前,一切正常,但是当我运行该程序时,出现以下异常:

Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/data/com.srplab.starcore/lib/libstar_java.so" not found
现在,为了包含这些.so文件,我创建了一个文件夹JNILBS,并放置了3种体系结构的.so文件:

我在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文件没有加载

这样做的正确方式是什么

您的“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/

上看到它。您的“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/