摘要: adb connect过程:adb install过程: 阅读全文
posted @ 2015-08-07 16:10 microliang 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 最近一直想从android-x86.org上下载android x86项目源码下来研究一下,但是由于网站被强,同样,google的网站也被强,导致使用repo下载的时候始终是unreachable network,网上看到一些下载android源码的博文,但是基本上都是n年之前的旧东西了,几乎没人介... 阅读全文
posted @ 2015-05-24 00:58 microliang 阅读(232) 评论(2) 推荐(0) 编辑
摘要: 前面分析了android HAL层是如何搜索硬件模块的动态共享库的,其实就是在"system/lib/hw/"或者"/vendor/lib/hw/"这两个路径下找到共享库modueid.variant.so后,通过调用load函数加载库。下面我们进入load函数,看看具体是如何实现加载共享库的。以下... 阅读全文
posted @ 2013-11-21 18:33 microliang 阅读(2759) 评论(0) 推荐(0) 编辑
摘要: Android.mk文件语法规范及使用模板Android.mk文件语法规范根据eoeandroid上的的连载,进行一些更新、修改和加亮。今天翻译ANDROID-MK.TXT文件(英文原文件在/development/Ndk/Docs/android-mk.txt)Android.mk文件语法规范Introduction:Android.mk编译文件是用来向Android NDK描述你的C,C++源代码文件的, 这篇文档描述了它的语法。在阅读下面的内容之前,假定你已经阅读了docs/OVERVIEW.TXT文件,了解了它们的脚色和用途。概述:一个Android.mk file用来向编译系统描述你 阅读全文
posted @ 2013-11-19 23:45 microliang 阅读(691) 评论(0) 推荐(0) 编辑
摘要: 一、下载源码1、下载工具repo:https://android.googlesource.com/tools/repo/在本地目录建个bin的文件夹,进入bin文件夹;通过git下载:[cpp] view plaincopygitclonehttps://android.googlesource.com/tools/repo下载完成后,进入repo文件夹,切换到稳定分支:[cpp] view plaincopygitcheckout-bstableorigin/stable将repo命令所在的目录,即/home/yourname/bin/repo添加到环境变量中:[cpp] view pla 阅读全文
posted @ 2013-11-19 23:42 microliang 阅读(1023) 评论(0) 推荐(0) 编辑
摘要: 上一篇我们分析了android HAL层的主要的两个结构体hw_module_t(硬件模块)和hw_device_t(硬件设备)的成员,下面我们来具体看看上层app到底是怎么实现操作硬件的?我们知道,一些硬件厂商不愿意将自己的一些核心代码开放出去,所以将这些代码放到HAL层,但是怎么保证它不开放呢?... 阅读全文
posted @ 2013-11-16 23:20 microliang 阅读(5759) 评论(0) 推荐(1) 编辑
摘要: 作为一个搞android驱动或者说搞底层的人,我觉得对于hal那是必须要掌握的,而且必须达到一定深度,于是我总结了一下,将整个自己的分析思路写下来。主要是看android源代码,根据源代码得到的思路。(看源代码比看什么著作书籍都管用)android HAL是什么?为什么有它?硬件抽象层是介于andr... 阅读全文
posted @ 2013-11-14 23:21 microliang 阅读(15205) 评论(0) 推荐(1) 编辑
摘要: 要想实现指南针功能,其实主要就是获取手机的方位,通过对比前一刻方位和现在手机方位算出手机旋转的角度,然后根据手机实际旋转的角度去旋转指南针的imageview。关键在于如何获取手机实际方位。那么如何获取到这个方位呢?那么,android中不是有方向传感器吗?其实android的方向传感器不是物理实际存在的,它只是逻辑上的,什么意思,就是它是通过磁力计和加速度计抽象出来的。因此,这个方位的获得其实是通过这两个传感器的数据通过一定的算法得到的。而这个算法则封装在了api中,我们只需直接使用即可。一般情况下,在android系统中获取手机的方位信息azimuth似乎是很简单的事情,在api中有TYP 阅读全文
posted @ 2013-11-13 18:04 microliang 阅读(9663) 评论(0) 推荐(1) 编辑
摘要: 昨天的某一个sensor的驱动,需要实现这样一个功能,就是在workqueue里面采集到五次数据之后再传给ioctl平均之后再传给上 层。所以在workqueue里面未采集到五次时,如果有app调用到ioctl对应的读数据的接口,那么只能阻塞一会儿等到workqueue那边采集 到五次之后平均再给ioctl这边,然后ioctl才能继续往下走平均之后再给上层。 那么这里刚好可以用complete,而且非常适合。 现在总结一下completion的用法。 completion是linux内核中一种简单的同步机制。 要使用completion,必须在文件中包含,同时创建一个类型为stru... 阅读全文
posted @ 2013-11-13 11:32 microliang 阅读(575) 评论(0) 推荐(0) 编辑
摘要: (albert luo 2013.8.17)对SensorService类的作用的理解:SensorService是android的sensor方面相关核心的类,其实是android系统SystemServer中的一个,是在android系统运行SystemServer时会自动运行起来,其实就是创建了一个线程,用来专门处理sensor相关的数据从hal到app(client)的传输以及对sensor的控制等功能。下面对SensorService类的架构分析。SensorService的作用主要是沟通app和底层hal的桥梁。我的理解是这样的。大概的连接图如下:如上图,SensorService 阅读全文
posted @ 2013-11-11 16:49 microliang 阅读(1178) 评论(0) 推荐(0) 编辑