Как интегрировать PJSIP с Xamarin.Android
Бизнес-требование:
Разработка мобильного приложения для совершения звонков и отправки сообщений с использованием PJSIP для платформ Android, iOS и Windows с использованием Xamarin.
Предпринятые шаги:
Android:
- Сборка PJSIP для Android (.so файл).
- Создан родной lib (.AAR) для Android.
- Создал бинарную библиотеку Java Xamarin.Android, выполнив следующие действия, указанные в https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/binding-an-aar/
- Созданы соответствующие папки (lib->arm64-v8a) для хранения.so файла в.apk.
Проблема:
Пример кода в 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());
}
Получение следующей ошибки времени выполнения для оператора:
(Java.Lang.JavaSystem.LoadLibrary("pjsua2"));:
Необработанное исключение:
Java.Lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "freeifaddrs"
referenced by "/data/app/PJSIPForAndroid.Android-1/lib/arm64/libpjsua2.so"... occurred
Эта ошибка возникает специально на телефонах Mi и LeTv под управлением Android 6.0.1 и Samsung Tablet под управлением Android KitKat 4.4.