【问题标题】:android - [linphone] couldn't find "libgnustl_shared.so"android - [linphone] 找不到“libgnustl_shared.so”
【发布时间】:2018-02-06 09:22:43
【问题描述】:

https://github.com/BelledonneCommunications/linphone-android安装linphone时出现一些错误

看起来像这样:

08-29 10:33:39.705 14701-14701/? E/AndroidRuntime: 致命异常: main 进程:org.linphone,PID:14701 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.linphone-2/base.apk"],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]] 找不到“libgnustl_shared.so” 在 java.lang.Runtime.loadLibrary(Runtime.java:367) 在 java.lang.System.loadLibrary(System.java:988) 在 org.linphone.core.LinphoneCoreFactoryImpl.(LinphoneCoreFactoryImpl.java:47) 在 java.lang.Class.classForName(本机方法) 在 java.lang.Class.forName(Class.java:309) 在 java.lang.Class.forName(Class.java:273) 在 org.linphone.core.LinphoneCoreFactory.instance(LinphoneCoreFactory.java:47) 在 org.linphone.LinphoneService.onCreate(LinphoneService.java:305) 在 android.app.ActivityThread.handleCreateService(ActivityThread.java:3020) 在 android.app.ActivityThread.access$1800(ActivityThread.java:182) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1557) 在 android.os.Handler.dispatchMessage(Handler.java:111) 在 android.os.Looper.loop(Looper.java:194) 在 android.app.ActivityThread.main(ActivityThread.java:5662) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

以前有人必须解决这个问题吗?或者有任何可以在android studio中正确运行的源代码?谢谢你

【问题讨论】:

    标签: java android c++ libstdc++ linphone


    【解决方案1】:

    这是因为 linphone 内置不包含 64 位库。 所以当你在Android上安装APK时,系统会在APK的lib文件夹中查找本地库目录(armeabi、armeabi-v7a、arm64-v8a、x86、x86_64、mips64、mips),顺序由Build确定.SUPPORTED_ABIS。

    如果您的应用碰巧有一个缺少库的 arm64-v8a 目录,则不会从另一个目录安装缺少的库,也不会混合这些库。这意味着您必须为每个架构提供全套库。

    因此,为了解决您的问题,您可以从构建中删除 64 位库,或将 abiFilters 设置为仅打包 32 位架构:

    android {
    ....
    defaultConfig {
        ....
        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }
    }
    

    }

    这是在您的项目中有这些库的情况下。您可以根据您的项目对其进行调整。 欲了解更多信息,请查看:How to use 32-bit native libraries on 64-bit Android device 你可以看看这个链接。

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 2018-03-14
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 2015-12-29
      • 2016-05-01
      相关资源
      最近更新 更多