use*_*325 6 android android-ndk opensl
我为Android开发了一个应用程序和一个本机库.本机库使用openSL ES进行音频处理.
在我的Android.mk文件中,我有以下声明:
LOCAL_LDLIBS := -lOpenSLES
Run Code Online (Sandbox Code Playgroud)
所以我猜这意味着应用程序将在设备上加载/执行应用程序时从设备的system/lib文件夹中动态链接openSLES库?
我面临的问题是设备上的库是错误的,我有3个更新的库,其中包含错误修复.如果可能,如何确保我的本机库使用我拥有的3个库:
Libwilhelm.so
libOpenMAXAL.so
libOpenSLES.so
Run Code Online (Sandbox Code Playgroud)
我只是更换
LOCAL_LDLIBS := -lOpenSLES
Run Code Online (Sandbox Code Playgroud)
同
LOCAL_SHARED_LIBRARIES := -lOpenSLES -lOpenMAXAL -lwilhelm
Run Code Online (Sandbox Code Playgroud)
只要您针对特定设备或非常有限的一组设备,所提出的解决方案就足够好了。但如果您的目标是一个公共应用程序,它将安装在不同的平台上,包括未来的“N”版本的 Android 和定制的 ROM(包括三星),您应该小心这些库的系统依赖性。
虽然 OpenSLES 和 OpenMAXAL 是无辜的(它们只依赖于 liblog 和 libwilhelm),但后者需要更多的小心。
查看其Android.mk,libwilhelm依赖于liblog libutils libmedia libbinder libstagefright libstagefright_foundation libcutils libgui libdl libeffects和libstagefright_http_support。
只有liblog和libdl是“官方的”(即 NDK 的一部分)。其他依赖于平台,并且它们的导出函数对于运行相同平台级别的不同设备可能不兼容。
为了安全起见,我只会介绍修复程序,并尽可能继续使用系统版本的 libwilhelm。我希望您可以通过这种方式减少系统依赖性。
| 归档时间: |
|
| 查看次数: |
499 次 |
| 最近记录: |