服务 Service 详细分析
Service 类型
Android 中的 Service 主要有两种:
Started Service
通过 startService() 启动,执行完毕后自行停止。常见于下载、上传、长连接保活等场景。Android 8.0 后台限制后引入的前台服务(Foreground Service)是它的特例。
Bound Service
通过 bindService() 绑定,提供进程间通信接口。被绑定时调用 onCreate() → onBind() → onServiceConnected()。
LibChecker 中的服务分析
进入应用详情页切到 Service Tab,会看到该 App 静态声明的所有 Service:
- 完整类名
- 是否 exported(是否允许外部调用)
- 是否需要特定权限才能启动或绑定
- 是否声明为独立进程运行
风险点识别
- exported=true 无权限保护:其他 App 可以直接启动或绑定这个 Service
- 独立进程的服务:某些恶意行为放在独立进程中,崩溃不影响主进程
- 启动服务的数量:过多 Started Service 可能暗示滥用前台服务权限
实用技巧
结合快照功能可以追踪某个 Service 是从哪个 App 版本开始出现的,辅助定位新引入的三方 SDK 组件。