【问题标题】:Trouble referencing a .so file in android studio在 android studio 中引用 .so 文件时遇到问题
【发布时间】:2017-04-28 10:44:56
【问题描述】:

所以我正在尝试将 CLE 集成到 Android 中,因此我必须添加一些 .so 文件。我正在关注here的教程

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

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

现在为了包含这些 .so 文件,我创建了一个文件夹 jniLibs 并为 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 文件没有加载。

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

【问题讨论】:

    标签: java android lua android-ndk


    【解决方案1】:

    您的“armeabi-v7a”文件夹必须重命名为“armeabi-v7a”。 也有错别字:

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

    你的文件夹是大L:

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

    顺便说一句,“src/main/jniLibs”默认用于原生库,您不必在 gradle 脚本中指定它。

    上面没有完整的代码块,但是您是否从静态初始化程序加载您的库?喜欢:

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

    并查看您的 apk 以确保您的库已成功收集。你可以在app/build/outputs/apk/看到它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 2017-10-16
      • 2016-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多