ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
为了能像“庖丁”那样解析Binder,我们必须得找一头“牛”来做解剖,而MediaServer(简称MS)正是一头比较好的“牛”。它是一个可执行程序,虽然Android的SDK提供Java层的API,但Android系统本身还是一个完整的基于Linux内核的操作系统,所以不会是所有程序都用Java编写,这里的MS就是一个用C++编写的可执行程序。 之所以选择MediaServer作为切入点,是因为这个Server是系统诸多重要Service的栖息地,它们包括: - AudioFlinger:音频系统中的重要核心服务。 - AudioPolicyService:音频系统中关于音频策略的重要服务。 - MediaPlayerService:多媒体系统中的重要服务。 - CameraService:有关摄像/照相的重要服务。 可以看到,MS除了不涉及Surface系统外,其他重要的服务基本上都涉及到了,它不愧是“庖丁”所要的好“牛”。 本章将以其中的MediaPlayerService为主切入点进行分析。先来分析MediaServer本身。