2

Business requirement:

Developing mobile app for making calls and sending messages using PJSIP for platforms Android, iOS and Windows using Xamarin.

Steps taken:

Android:

  1. Build PJSIP for Android (.so file).
  2. Created native lib (.AAR) for Android.
  3. Created Xamarin.Android Java binading library by following steps mentioned in https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/binding-an-aar/
  4. Created the respective folders (lib->arm64-v8a) for keeping .so file in .apk.

Problem:

Sample code snippet in Xamarin.Android:

protected override void OnCreate(Bundle bundle)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(bundle);
            Java.Lang.JavaSystem.LoadLibrary("pjsua2");
            Account obj = new Account();
            global::Xamarin.Forms.Forms.Init(this, bundle);
            LoadApplication(new App());
        }

Getting the following run time error on statement:

 (Java.Lang.JavaSystem.LoadLibrary("pjsua2"));:

Unhandled Exception:

Java.Lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "freeifaddrs" 
referenced by "/data/app/PJSIPForAndroid.Android-1/lib/arm64/libpjsua2.so"... occurred

This error is coming specifically on Mi and LeTv phones running android 6.0.1 and Samsung Tablet running android kitkat 4.4.

maveroid
  • 1,840
  • 1
  • 20
  • 20
  • 1
    1) how are you implementing `getifaddrs` (3rd-party source/lib?) 2) Your java code should be calling LoadLibrary 3) You can create a C# wrapper for for the PJSIP library instead of bundling it inside a aar/Java library – SushiHangover Oct 04 '17 at 06:00
  • Hi @SushiHangover, Please check the updated question and help – maveroid Oct 23 '17 at 07:01

0 Answers0