链接Android上的更新库

时间:2015-11-19 20:41:28

标签: android android-ndk opensl

我为Android开发了一个应用程序和一个本机库。本机库使用openSL ES进行音频处理。

在我的Android.mk文件中,我有以下声明:

LOCAL_LDLIBS := -lOpenSLES

所以我猜这意味着应用程序将在设备上加载/执行应用程序时从设备的system / lib文件夹中动态链接openSLES库

我面临的问题是设备上的库是错误的,我有3个更新的库,其中包含错误修复。如果可能,我如何确保我的本机库使用我拥有的3个库:

Libwilhelm.so
libOpenMAXAL.so
libOpenSLES.so

我只是替换

LOCAL_LDLIBS := -lOpenSLES

LOCAL_SHARED_LIBRARIES := -lOpenSLES -lOpenMAXAL -lwilhelm

1 个答案:

答案 0 :(得分:4)

只要您定位特定设备或一组非常有限的设备,建议的解决方案就足够了。但是,如果你的目标是一个公共应用程序,它将安装在不同的平台上,包括未来的'N'版本的Android,以及定制的ROM,包括例如三星,你应该小心这些库的系统依赖性。

虽然OpenSLES和OpenMAXAL是无辜的(它们只依赖于liblog和libwilhelm),但后者需要更多关注。

查看其Android.mk libwilhelm 取决于 liblog libutils libmedia libbinder libstagefright libstagefright_foundation libcutils libgui libdl libeffects libstagefright_http_support 。< / p>

只有 liblog libdl 是“官方”(即NDK的一部分)。其他的依赖于平台,并且它们的导出功能可能与运行相同平台级别的不同设备不兼容。

为了安全起见,我只会介绍修复程序,并尽可能继续使用libwilhelm的系统版本。我希望你能以这种方式减少你的系统依赖。