gpt4 book ai didi

android - 如何使用 android.mk 链接到 Android NDK 应用程序中的 libmedia.so 系统库?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:38:40 24 4
gpt4 key购买 nike

我想创建一个使用 Android system/lib/libmedia.so 的播放器。

直接使用JNI播放视频。

在 Android.mk 中,我添加了“-lmedia”以包含库,但我无法直接链接它。

这是我的流程。

  1. 写一个Cpp文件,在libmedia.so中包含一些头文件

  2. 在LOCAL_LDLIBS的Android.mk中添加“-lmedia”

    比如..

    LOCAL_LDLIBS -lmedia -lstagefright

  3. 使用ndk-build构建.so

发生错误!!

有没有人有一些答案可以帮助???

最佳答案

libmedia.solibsinstructionght.so 不是公共(public) API 的一部分。这意味着理论上,您不应该依赖它们。但在实践中,这些库存在于所有设备上,但它们是不同的。

您可以从您的设备中提取此二进制文件,甚至可以使用命令从模拟器中提取此二进制文件

adb pull /system/lib/libmedia.so C:/android-ndk/platforms/android-14/arch-arm/usr/lib

这会将 ths 文件与公共(public) API 放在一起,以便与 ndk-build 一起使用它更容易。另一方面,您应该意识到 fragment 化不仅存在于不同级别的 Android 之间,还存在于芯片组、制造商甚至模型之间。

为了处理这个问题,我从不同的设备 .so 文件到单独的目录,并将其中一个 添加到链接器路径,例如

LOCAL_LDLIBS += -Lc:/android/galaxys.4.1.2.system.lib

上面的说明无法解决您的方法所面临的大问题。 libmedia.so 不打算链接到用户应用程序。它假定特权用户的上下文可以访问 protected 设备,例如相机、编解码器和屏幕。

如果您的目标是 Root设备或准备自定义 ROM,则可以充分利用此库。并知道您在做什么,以及如何避免从系统中窃取重要资源。

否则,链接媒体库几乎没有什么好处。

关于android - 如何使用 android.mk 链接到 Android NDK 应用程序中的 libmedia.so 系统库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13115827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com