libmedia.so
并且libsinstructionght.so
不是公共 API 的一部分。这意味着理论上,您不应该依赖它们。但实际上,这些库存在于所有设备上,但它们是不同的。
您可以从您的设备中提取此二进制文件,甚至可以使用命令从模拟器中提取此二进制文件
adb pull /system/lib/libmedia.so C:/android-ndk/platforms/android-14/arch-arm/usr/lib
这会将文件与公共 API 放在一起,以便更轻松地与 ndk-build 一起使用。另一方面,您应该注意的不仅是不同级别的 Android 之间的碎片,还包括芯片组、制造商甚至型号之间的碎片。
为了处理这个问题,我将 .so文件从不同的设备拉到单独的目录中,并将其中一个添加到链接器路径中,例如
LOCAL_LDLIBS += -Lc:/android/galaxys.4.1.2.system.lib
上述说明无法解决您在方法中面临的大问题。libmedia.so
不打算链接到用户应用程序。它假定具有访问受保护设备(如相机、编解码器和屏幕)的特权用户的上下文。
如果您以 root 设备为目标或准备自定义 ROM,则可以充分利用此库。并且知道你在做什么,以及如何避免从系统中窃取重要资源。
否则,链接媒体库几乎没有什么收获。