Что мне делать при компиляции imsdroid, получая "java.lang.UnsatisfiedLinkError"?

Здесь я сообщаю об ошибке при компиляции " 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)

Кто-нибудь может дать мне несколько советов по преодолению этой ошибки?

1 ответ

IMSDroid использует библиотеку поддержки серверной части Doubango в качестве зависимости JNI Lib. Вы должны выполнить шаги построения Doubango, чтобы настроить компиляцию Doubango на Linux-машине для создания libTinyWRAP.so

Это немного сложно, и я работал над этим целый год, так как изначально у меня не было большого опыта работы с файлами make linux и т. Д. Инструкции и документация также ограничены. Так что, если вы новичок, вам предстоит много бессонных ночей и онлайн-консультации, прежде чем заставить его работать так, как вы хотите.

Не заблуждайтесь, IMSDroid стабилен, работает полностью, имеет потрясающие функции и довольно надежен. Библиотека Doubango тоже неплохая, но не содержит конкретной документации. Это единственное, что актуально для видеозвонков даже сегодня!

Эта ошибка, которую вы видите, очевидно, связана с тем, что ваш файл libTinyWRAP.so не находится в папке, в которой он должен находиться, и при установке приложения эта библиотека не была скопирована в требуемую папку lib на устройстве.

Используйте Shift+Ctrl+F в Android Studio и найдите loadLibrary, который должен быть внутри android-ngn-stack или внутри некоторого Engine.java или NgnEngine.java. Ваша ошибка исходит оттуда.

Ваше приложение пытается загрузить собственную библиотеку. Проверьте, существует ли этот файл. Эта проблема чаще всего обнаруживается, потому что библиотека не существует или не может быть найдена 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 ();
     }
}

Более подробную информацию вы можете увидеть здесь Исключение

Другие вопросы по тегам