业务需求:
使用 Xamarin 为 Android、iOS 和 Windows 平台开发使用 PJSIP 拨打电话和发送消息的移动应用程序。
采取的步骤:
安卓:
- 为 Android 构建 PJSIP(.so 文件)。
- 为 Android 创建了本机库 (.AAR)。
- 按照https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/binding-an-aar/中提到的步骤创建 Xamarin.Android Java 绑定库
- 创建了相应的文件夹 (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
此错误专门出现在运行 android 6.0.1 的 Mi 和 LeTv 手机以及运行 android kitkat 4.4 的三星平板电脑上。