Vane's Blog

进程与线程

虽然每个进程都有自己的虚拟地址空间,但是为了进一步保障系统运行安全,虚拟地址空间被划分为用户空间和内核空间。操作系统运行在内核空间,用户程序运行在用户空间。内核空间有所有进程的地址空间共享,但是用户程序不能直接访问内核空间。 操作系统保存的进程控制信息自然是在内核空间。这里除了页目录以外还可以找到很多重要的内容,例如进程和父进程ID、状态和打开文件句柄表等等。 线程就是进程中的执行体...

Android Native内存泄漏案例

项目中遇到一个内存泄漏的情形:usb camera预览时出现了内存泄漏,但内存泄漏很小,测试一晚上泄漏20M内存左右。因此借此机会学习下当前市面上用于Android检测内存泄漏的工具。 以下内容是搬运字节旗下的西瓜团队的文章: 西瓜视频稳定性治理体系建设二:Raphael 原理及实践 背景 Android 平台上的内存问题一直是性能优化和稳定性治理的焦点和痛点,Java 堆内存因为有...

HTTP基础

1. HTTP到底是什么 两种最直观的印象 浏览器地址栏输入地址,打开网页 Android中发送网络请求,返回对于内容 HTTP定义:Hypertext Transfer Protocol,超文本传输协议,和 HTML (Hypertext Markup Language 超文本标记语言) 一起诞生,用于在网络上请求和传输 HTML 内容。 超文本,即「扩展型文本」,指的...

深入理解Android相机体系结构(非原创)

1. 概述 Android系统自2007年底被Google推出问世以来,已经走过13个春夏秋冬,历经多次的大大小小的迭代重构、架构调整,虽然时代年轮依旧滚滚,虽然每年技术依然在不断地推陈出新,但是到目前为止,依然可以窥见其接口与实现相分离的核心设计理念,所以其架构设计的优越性可见一斑,另外,随着智能手机的快速普及,面对这一庞大终端市场,作为系统中最重要的几个组件之一的相机系统也必定会作为主...

MacBooK pro编译Android 9.0和Android 11源码

当前设备环境 操作系统:macOS Mojave 10.14.6 手机:谷歌手机Pixel Pixel 3 XL 下载源码版本:android-9.0.0_r46 android-11.0.0_r17 创建磁盘映像 由于mac系统文件系统是大小写不敏感的系统,所以需要在mac中创建一个支持大小写敏感的文件系统。 创建分区 安卓9.0编译后比较大,笔者编译...

Activity启动耗时统计方案(非原创)

1. 概述 Activity的启动速度是很多开发者关心的问题,当页面跳转耗时过长时,App 就会给人一种非常笨重的感觉。在遇到某个页面启动过慢的时候,开发的第一直觉一般是 onCreate 执行速度太慢了,然后在 onCreate 方法前后记录下时间戳计算出耗时。不过有时候即使把 onCreate 方法的耗时优化了,效果仍旧不明显。实际上影响到 Activity 启动速度的原因是多方面的,...

Android系统预置APP

本文主要介绍了如何在Android系统源码上预置APP,包括无源码APP和有源码APP两种情况。 1. 概述 Android 系统预置 APP 分为两种,一种是直接预置 APK,一种是预置带有源码的 APP。 2. 预置 APK 以 AppDemo.apk 示例,在 vendor 目录下创建文件夹apk,然后在apk目录下新建名为 AppDemo的文件(一般第三方apk最好...

Android Studio使用系统隐藏API的方法

本文主要介绍了如何使用 Android Studio 进行App开发时调用 Android 的 internal API 和 hidden API,同时也介绍如何在Android Studio 进行App开发时调用定制的Android 系统的API。 1. 概述 Android Studio 是Google基于 IntelliJ IDEA 且适用于开发 Android 应用的官方...

Binder十万个为什么

以提问的方式探讨 Android 中 Binder 机制。 1. 概述 大家都知道Binder是一种进程间通信机制, 在 Linux 中,Binder 被看做一个字符设备,Binder 驱动会为每个打开 Binder的进程在内核里分配一块地址空间,Client 向 Server 传递数据,其实就是将数据写道内核空间中 Server 的地址里面,然后通知Server去取数据。原理其...

Android添加系统服务访问驱动程序系列:添加framework层服务

基于Android 6.0源码,基于实操在Android系统中如何添加一个framework层的服务访问驱动程序。 1. 概述 在Android添加系统服务访问驱动程序系列:添加HAL层中我们为 驱动 mychar 是实现一个HAL层模块 operatechar。开发好 HAL 层模块后,我们需要在framework 层实现一个硬件访问服务 operate_char。硬件访问服务...