我尝试使用来自linphone网站的".so"文件将liblinphone
与android工作室一起使用,我自己用ndk 9,10,11,12版本构建了它。始终使用x86_64
平台时,错误出现在Android监视器中:
04-27 02:37:01.404 13883-13883/? I/LinphoneCoreFactoryImpl: Trying to load liblinphone for x86_64
04-27 02:37:01.410 13883-13883/? W/LinphoneCoreFactoryImpl: Unable to load optional library libffmpeg-linphone-x86_64
04-27 02:37:01.411 13883-13883/? I/LinphoneCoreFactoryImpl: Trying to load liblinphone for x86
04-27 02:37:01.414 13883-13883/? W/LinphoneCoreFactoryImpl: Unable to load optional library libffmpeg-linphone-x86
04-27 02:37:01.417 13883-13883/? D/AndroidRuntime: Shutting down VM
如果我安装linphone应用程序,它适用于平台x86_64
。请帮忙,我能做错什么?
我在arm64
架构上遇到了类似的问题,我使用下面提到的解决方案解决了这个问题。
到目前为止,我找到的最佳解决方案(请注意:这是一个令人讨厌的黑客)是简单地从APK中排除所有64位二进制文件。如果没有找到 64 位依赖项,Android 将很乐意加载所有.so
的 32 位回退版本并正常工作,前提是您不依赖于任何特定于 64 位的功能。若要在项目中实现此功能,请执行以下步骤:
-
在项目根目录的
gradle.properties
中,添加该行android.useDeprecatedNdk=true.
-
将以下块添加到
build.gradle
文件中,为每个 64 位依赖项添加一个排除行:android { ... defaultConfig { ... ndk { abiFilters "armeabi-v7a", "x86" } packagingOptions { exclude "lib/arm64-v8a/librealm-jni.so" } } }
完成后,请务必使用新配置生成APK,并在ARM64设备上对其进行测试。
此解决方案的来源。