0

在这里,我在编译imsdroid ”时提供了错误

Native code library failed to load.
dlopen failed: library "/data/data/org.doubango.imsdroid/lib/libtinyWRAP.so" not found



  Process: org.doubango.imsdroid, PID: 9195
    > java.lang.UnsatisfiedLinkError: Native method not found org.doubango.tinyWRAP.tinyWRAPJNI.swig_module_init:()V
    > at org.doubango.tinyWRAP.tinyWRAPJNI.swig_module_init(Native Method)
    > at org.doubango.tinyWRAP.tinyWRAPJNI.<clinit>(tinyWRAPJNI.java:554)
    > at org.doubango.tinyWRAP.XcapCallback.<init>(XcapCallback.java:0)
    > at org.doubango.imsdroid.Services.Impl.XcapService$MyXcapCallback.<init>(XcapService.java:0)
    > at org.doubango.imsdroid.Services.Impl.XcapService.<init>(XcapService.java:93)
    > at org.doubango.imsdroid.Services.Impl.ServiceManager.<clinit>(ServiceManager.java:91)
    > at org.doubango.imsdroid.Main.<init>(Main.java:132)
    > at java.lang.Class.newInstanceImpl(Native Method)
    > at java.lang.Class.newInstance(Class.java:1208)
    > at android.app.Instrumentation.newActivity(Instrumentation.java:1068)
    > at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)
    > at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493)
    > at android.app.ActivityThread.access$800(ActivityThread.java:166)
    > at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
    > at android.os.Handler.dispatchMessage(Handler.java:102)
    > at android.os.Looper.loop(Looper.java:136)
    > at android.app.ActivityThread.main(ActivityThread.java:5584)
    > at java.lang.reflect.Method.invokeNative(Native Method)
    > at java.lang.reflect.Method.invoke(Method.java:515)
    > at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
    > at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
    > at dalvik.system.NativeStart.main(Native Method)

谁能给我一些建议来克服这个错误?

4

2 回答 2

0

IMSDroid 使用 Doubango 后端支持库作为 JNI Lib 依赖项。您必须按照构建 Doubango的步骤在 linux 机器上设置 Doubango 编译以生成 libTinyWRAP.so

它有点棘手,我已经研究了整整一年,因为我最初对 linux make 文件等没有太多背景。说明和文档也很有限。因此,如果您是初学者,您会经历很多不眠之夜和在线咨询,然后才能按照自己的意愿工作。

毫无疑问,IMSDroid 稳定且运行良好,功能强大且非常可靠。Doubango 库也很不错,但没有附带任何具体的文档。即使在今天,它仍然与进行视频通话有关!

您看到的这个错误显然是因为您的 libTinyWRAP.so 文件不在应有的文件夹中,并且当您安装应用程序时,该库未复制到设备上所需的 lib 文件夹中。

在 Android Studio 中使用 Shift+Ctrl+F,然后查找loadLibrary,它应该在 android-ngn-stack 内或 some Engine.javaor内NgnEngine.java。你的错误来自那里。

于 2020-06-22T19:25:59.610 回答
0

您的应用程序尝试加载本机库,检查该文件是否存在。这个问题最常出现是因为库不存在,或者JVM无法定位。这些异常类的结构在这里,

public class UnsatisfiedLinkErrorExample {

     // Define a method that is defined externally.
     native void CFunction();

     // Load an external library, called "clibrary".
     static {
          System.loadLibrary("clibrary");
     }

     public static void main(String argv[]) {
          UnsatisfiedLinkErrorExample example = new UnsatisfiedLinkErrorExample();
          example.CFunction ();
     }
}

有关更多详细信息,您可以在此处查看异常

于 2016-08-22T04:53:41.820 回答