Dagger 在Android库(SDK)模块中的使用实践

本文主要描述如何使用Dagger解决实际项目中遇到的问题,这两个问题是: 如何在库(SDK)模块中使用Dagger依赖注入? MVP中的Dagger依赖注入如何实现无感注入? 本文不会介绍如何使用Dagger,只专注于描述如上两个问题的解决的前因后果及解决方案。 背景 接手开发一个SDK,大致情况如下: ...

2022年3月6日 · 14 分钟 · 野生莲藕

Android bindService流程

本文分析bindService的流程,首先我们通过阅读源码获取一个主线的调用地图,然后提出若干问题,包括:APP进程中如何获取AMS,AMS如何启动APP-service的进程,AMS中如何获取ApplicationThread并与之通讯,Service的启动及绑定流程;然后再通过源码一一解答。最后再整体总结梳理一下整体流程; ...

2021年4月12日 · 28 分钟 · 野生莲藕

搭建Android源码工作环境

简单介绍系统架构、编译环境的搭建 简单介绍利用 AndroidStudio 调试 system_process 进程的方法及编译更新部分系统模块的方式 Android系统架构 Android 系统架构如下两图所示: <?xml version="1.0" encoding="UTF-8"?> 应用框架。应用框架最常被应用开发者使用。很多此类 API 都可以直接映射到底层 HAL 接口,并可提供与实现驱动程序相关的实用信息。 Binder IPC。Binder 进程间通信 (IPC) 机制允许应用框架跨越进程边界并调用 Android 系统服务代码,这使得高级框架 API 能与 Android 系统服务进行交互。在应用框架级别,开发者无法看到此类通信的过程,但一切似乎都在“按部就班地运行”。 系统服务。系统服务是专注于特定功能的模块化组件,例如窗口管理器、搜索服务或通知管理器。应用框架 API 所提供的功能可与系统服务通信,以访问底层硬件。Android 包含两组服务:“系统”(诸如窗口管理器和通知管理器之类的服务)和“媒体”(与播放和录制媒体相关的服务)。 硬件抽象层 (HAL)。HAL 可定义一个标准接口以供硬件供应商实现,这可让 Android 忽略较低级别的驱动程序实现。借助 HAL,硬件开发者可以顺利实现相关功能,而不会影响或更改更高级别的系统。HAL 实现会被封装成模块,并会由 Android 系统适时地加载。如需了解详情,请参阅硬件抽象层 (HAL)。 Linux 内核。开发设备驱动程序与开发典型的 Linux 设备驱动程序类似。Android 使用的 Linux 内核版本包含一些特殊的补充功能,例如低内存终止守护进程(一个内存管理系统,可更主动地保留内存)、唤醒锁定(一种 PowerManager 系统服务)、Binder IPC 驱动程序,以及对移动嵌入式平台来说非常重要的其他功能。这些补充功能主要用于增强系统功能,不会影响驱动程序开发。可以使用任意版本的内核,只要它支持所需功能(如 Binder 驱动程序)即可。不过建议使用 Android 内核的最新版本。如需了解详情,请参阅构建内核一文。 以上部分内容来源: https://source.android.google.cn/devices/architecture?hl=zh-cn ...

2021年4月8日 · 13 分钟 · 野生莲藕