如何构建和使用PJSIP用于不同于armeabi的架构?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何构建和使用PJSIP用于不同于armeabi的架构?相关的知识,希望对你有一定的参考价值。

我成功编译了android的PJSIP库。当我为默认架构armeabi构建时,示例项目没有任何问题。现在我尝试编译arch for arch,例如armeabi-v7a和arm64-v8a。不幸的是,当我在适当的文件夹(jnLibs / armeabi-v7a和jniLibs / arm64-v8a)中添加库时,应用程序无法启动...

要为不同的archs设置构建,我使用以下命令:

NDK_TOOLCHAIN_VERSION=4.9 TARGET_ABI=armeabi-v7a ./configure-android --use-ndk-cflags

我在应用启动时遇到此错误:

07-04 12:28:46.079 15317-15317/? E/AndroidRuntime: FATAL EXCEPTION: main
                                               Process: com.futuremind.omili, PID: 15317
                                               java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "getifaddrs" referenced by "/data/app/com.futuremind.omili-1/lib/arm/libpjsua2.so"...
                                                   at java.lang.Runtime.loadLibrary(Runtime.java:372)
                                                   at java.lang.System.loadLibrary(System.java:1076)
                                                   at com.futuremind.omili.MyApp.<clinit>(MyApp.java:293)
                                                   at com.futuremind.omili.MainActivity.onCreate(MainActivity.java:87)
                                                   at android.app.Activity.performCreate(Activity.java:6289)
                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2405)
                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2535)
                                                   at android.app.ActivityThread.access$900(ActivityThread.java:155)
                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380)
                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                   at android.os.Looper.loop(Looper.java:152)
                                                   at android.app.ActivityThread.main(ActivityThread.java:5497)
                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

谢谢你的帮助! :)

答案

我能够通过更新“pjsip-apps / src / swig / java / android / app / src / main”中的AndroidManifest.xml来修复此错误,以匹配我的android目标 - 在我的情况下为“23”。然后在“pjsip-apps / src / swig”中“make clean”和另一个“make”,并重建我的应用程序。

以上是关于如何构建和使用PJSIP用于不同于armeabi的架构?的主要内容,如果未能解决你的问题,请参考以下文章

pjsip android:dlopen 失败:找不到符号“__aeabi_memclr8

如何在我的 iOS 项目中为模拟器和设备构建和集成 pjsip 2.5.5?

如何在 Visual Studio 中将 pjsip 构建为 DLL?

iOS 应用中支持 IPV6 的 pjsip 2.5.5

pjsip ios:蓝牙不工作

人行横道项目错误“构建 ABI 'armeabi-v7a' 失败”