- 博客(310)
- 资源 (2)
- 收藏
- 关注
转载 android system.img,ramdisk.img,boot.img 分析
android 源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中, ramdisk.img是emulator的 文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator负责加载这3个映像文件后,会 把system.img和userdata.img分别加载到 ramdisk文件系统中的sys
2014-07-22 10:55:27
1178
转载 Android JNI 使用的数据结构JNINativeMethod详解
Andoird 中使用了一种不同传统Java JNI的方式来定义其native的函数。其中很重要的区别是Andorid使用了一种Java 和 C 函数的映射表数组,并在其中描述了函数的参数和返回值。这个数组的类型是JNINativeMethod,定义如下:typedef struct {const char* name;const char* signature;voi
2014-07-22 09:47:09
893
转载 浅析Android下的Android.mk文件
1 概述 大家都知道在Linux下编辑经常要写一个Makefile文件, 可以把这个Makefile文件理解成一个编译配置文件,它保存着如何编译的配置信息,即指导编译器如何来编译程序,并决定编译的结果是什么。而在Android下的Android.mk文件也是类型的功能,顾名思义,从名字上就可以猜测得到,Android.mk文件是针对Android的Makefile文件.具体来说
2014-07-21 19:34:13
1038
转载 Android之Goldfish
一. Goldfish介绍Goldfish是一种虚拟的ARM处理器,在Android的仿真环境中使用。Android模拟器通过运行它来运行arm926t指令集(arm926t属于armv5构架,goldfish处理器有ARMv5和ARMv7两个版本,在一般情况下,使用ARMv5的版本即可)。编译生成的linux内核镜像在android的模拟器中使用。启动模拟器时,Linux Ker
2014-07-16 10:44:13
1371
转载 Android SDK 源代码编译
1. 环境Ubuntu 10.04 32-bitsudo apt-get install git-coresudo apt-get install curlsudo apt-get install zlib -dev 变为 sudo apt-get install zlib1g -devsudo apt-get install bisonsudo a
2014-07-16 09:18:00
789
转载 callback理解
当然,也可以在事件管理或事件通知者类中,通过注册的方式来注册多个对此事件感兴趣的对象。1. 定义一个接口InterestingEvent ,回调方法nterestingEvent(String event) 简单接收一个String 参数。interface InterestingEvent { public void interestingEvent(String ev
2014-06-11 17:57:01
1024
转载 android下的service以及callback
AIDL实现就可以在客户端中调用服务端的方法,并传递数据到服务端,也可以服务端传递数据过来;但是如果要从服务端去调用客户端的方法,那么就需要注册callback! 抄自和源码:http://zxl-ong.iteye.com/blog/736888 前面的文件讲到用AIDL来实现进程间的通信,但是只讲到客户端调用服务端的方法,现在来看看服务端对客户端方法的调用cal
2014-06-11 17:39:20
6382
转载 android下的callback机制
按照我个人的理解,就是: 用java的回调机制来实现C语言中的函数指针的传递。 为了了解什么是回调函数,在网上查阅了如下资料,整理如下: 资料一:首先说说什么叫回调函数? 在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口来编写程序,使它调用,这个就 称为回调。在调用接口
2014-06-11 17:38:10
19391
转载 Bluetooth in Android 4.2 and 4.3:Scan remote devices
来源:http://blog.youkuaiyun.com/wendell_gong/article/details/16864467
2014-05-26 19:14:32
1901
转载 理解 Android Build 系统
前言Android Build 系统是 Android 源码的一部分。关于如何获取 Android 源码,请参照 Android Source 官方网站:http://source.android.com/source/downloading.html。Android Build 系统用来编译 Android 系统,Android SDK 以及相关文档。该系统主要由 Mak
2014-05-20 17:05:24
687
原创 分析IBinder体系中getService的流程
IBinder体系中得到一个服务的过程分析:ServiceManager是管理所有服务(如音频,相机)的一个进程,它的handle是0一、总的来说:得到一个service很简单,分成两步,1,得到一个默认的serviceManager;2,然后使用serviceManger->getService(service名称)得到具体的service二、详细分析参照网上一些资料
2014-05-19 14:54:20
6854
转载 Android IPC机制Binder解析
花了一个上午的时间把这篇文章翻译完,确实写的很透彻,但美中不足的地方是没有插图,不能直观的了解Binder机制,说实话我自己对binder也理解的很浅显,特别是到binder kernel driver哪块,还要等我先学习linux驱动再来看一遍吧,等以后看懂了再自己绘图应该更有助于理解。---------------------------------------------------
2014-05-16 17:40:38
1114
转载 Android的IPC机制Binder的详解汇总
第一部分 Binder的组成 1.1 驱动程序部分驱动程序的部分在以下的文件夹中:Java代码 kernel/include/linux/binder.h kernel/drivers/android/binder.c Java代码 kernel/include/linux/binder.h kernel/drive
2014-05-16 17:27:49
882
转载 android的binder机制研究
(一) 概述 android的binder机制提供一种进程间通信的方法,使一个进程可以以类似远程过程调用的形式调用另一个进程所提供的功能。binder机制在Java环境和C/C++环境都有提供。 android的代码中,与C/C++的binder包括一些类型和接口的定义和实现,相关的代码在下面这几个文件中: frameworks\base\include
2014-05-16 13:34:48
640
转载 Android Binder设计与实现 – 设计篇
摘要Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统 IPC做对比有助于我们深入领会进程间通信的实现和性能优化。本文将对Binder的设计细节做一个全面的阐述,首先通过介绍Binder通信模型和
2014-05-16 13:33:41
637
转载 AIDL简单入门
最近即将做的一个项目里面需要使用到AIDL(Android Interface Definition Language:接口描述语言)技术,自己早前只是简单瞄了一眼,我的理解它和java中的RMI的概念差不多,在这里我就不相信讲解什么事AIDL了,网上这种介绍非常多。不过概念毕竟是书本上的东西,我决定亲自测试一下。废话不说了,直接开始 1、 既然AIDL是既然是可以在不同进程间进行操作,那么我
2014-05-15 16:56:04
650
转载 Android系统RPC与Binder
一、RPC与IPC关系 Binder机制对于Android系统学习就犹如根文件系统挂载部分对于Linux内核学习;是一座不得不翻越的大山(指其复杂程度与重要性)。1.RPC基本流程 RPC在调用一个远程过程后,自己进入等待状态,传往远程过程的参数包括过程参数,返回参数包括执行结果;当收到包括执行结果的消息后,本地进程从消息中取得结果,调用进程重新开始执行。在
2014-05-15 15:11:04
2354
转载 Android之Binder设计分析
接着上篇binder简要介绍(见 http://www.linuxidc.com/Linux/2012-07/66195.htm ),我们来分析binder机制的设计。binder主要框架分为三个部分:服务端,binder驱动,客户端。binder在Android最常见的使用场景就是一个程序的activity与系统service进行交互。比如我通过wifi的service来获取wifi控制
2014-05-15 09:27:37
697
转载 Android中的Binder机制的简要理解
我们知道,在Android系统中,每一个应用程序都运行在独立的进程中,这也保证了当其中一个程序出现异常而不会影响另一个应用程序的正常运转。在许多情况下,我们activity都会与各种系统的service打交道,很显然,我们写的程序中activity与系统service肯定不是同一个进程,但是它们之间是怎样实现通信的呢?Binder是android中一种实现进程间通信(IPC)的方式之一。了
2014-05-15 09:26:45
680
转载 JNI编程注意事项
整理项目文档时, 忽然发现当年的一篇以前公司里关于JNI编程 的标准化文档。做为收藏,就贴在这里吧。注:关于JNI, 现在好像有一个OpenSource项目jace可以帮助进行JNI的开发。另外, 推荐IBM Developerworks网站上的一个教程《用jni进行java编程》JNI编程注意事项:1、 JNI的函数声明:JNI函数声明方法为JAVA_Pac
2014-05-14 19:43:41
488
转载 较详细的介绍JNI
JNI其实是Java Native Interface的简称,也就是java本地接口。它提供了若干的API实现了和Java和其他语言的通信(主要是C&C++)。也许不少人觉得Java已经足够强大,为什么要需要JNI这种东西呢?我们知道Java是一种平台无关性的语言,平台对于上层的java代码来说是透明的,所以在多数时间我们是不需要JNI的,但是假如你遇到了如下的三种情况之一呢? 你的J
2014-05-14 19:42:00
1095
转载 Android JNI调用(三)
最后需要说的就是,在偶传上来的代码中,可能会发现有一个叫做libcutils.a的编译好的静态库,这个东西就“说来话长”了,主要原因是偶在做实验的时候,还没有ndk发布出来,android手机里面也没个gdbserver之类的工具,调试起来十分痛苦。偶认为再怎么弱,也要输出点东西到logcat吧?!因此,从android-platform的平台源代码中提取了cutils的头文件,直接把androi
2014-05-14 19:06:48
620
转载 Android JNI调用(二)
生成java程序与c程序的接口文件 谈到这里,自然就会联想到是c语言的。h文件了,现在的问题在于如何从。java文件生成我们需要的。h格式的c/c++文件。答案就是javah这个小工具基本上所有的jdk都会提供: javah -classpath "java类的地址" 利用javah就可以很容易地将JniModule。java代码的native标记的部分转换为c/c
2014-05-14 19:06:16
569
转载 Android JNI调用(一)
1.jni的基本工作原理 (1)java的本质 想搞明白jni的本质,还要从java的本质说起.从本质上来说,java这门语言就是一门脚本语言(这是偶的个人理解,希望java大侠们不要用板砖拍我),它的运行完全依赖于脚本引擎对java的代码进行解释和执行(当然了,现代的java已经先进许多,可以从源代码编译成.class之类的中间格式的二进制文件,这种处理会大大地加快
2014-05-14 19:05:47
629
转载 Gerrit代码审核服务器的工作流程和原理
Gerrit 代码审核服务器的工作流和原理谷歌 Android 开源项目在 Git 的使用上有两个重要的创新,一个是为多版本库协同而引入的 repo,这在之前我们已经详细讨论过。另外一个重要的创新就是 Gerrit —— 代码审核服务器。Gerrit 为 Git 引入的代码审核是强制性的,就是说除非特别的授权设置,向 Git 版本库的推送(Push)必须要经过 Gerrit 服务器,修订必
2014-05-14 11:22:02
6855
转载 SSH的密匙管理, 免密码登录
ssh访问可以通过两种形式进行登录:安全密码认证:登录username@remotehost,输入对应username的密码,该密码会被加密发给remotehost,接下来,remotehost会从密码数据库中进行匹配,如果成功,则登录成功。密钥访问:localhost通过ssh-keygen来生成公钥密钥对,如果他想访问一个remotehost,则只需要将公钥添加到remotehost的
2014-05-14 11:11:39
747
转载 repo的小结
repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载、管理Android项目的软件仓库。1. 下载 repo 的地址: http://android.git.kernel.org/repo ,可以用 wget http://android.git.kernel.org/repo 或者 curl http://android.git.kernel.org/r
2014-05-14 10:28:03
707
转载 蓝牙技术
蓝牙技术Bluetooth 历史“Bluetooth”这个名称来源于公元 10 世纪丹麦国王 Harald Blatand - 英译为 Harold Bluetooth。在行业协会筹备阶段,需要一个极具有表现力的名字来命名这项高新技术。通过对欧洲历史及对这一无线技术未来发展的一夜的讨论,好些人 认为以国王 Blatand 的名号来命名此技术再恰当不过。国王 Blatand 统一了战争纷扰的
2014-05-07 19:01:08
7702
转载 Bluetooth在andriod下的开发基本操作
1.硬件 主板通过USB给蓝牙芯片供电,蓝牙芯片通过Uart接口与主板通信,通过主板的miniUSB接口可以进行andriod开发。Firmware的Log信息通过串口转USB(接串口转USB的RX和GND),可以在PC上查看。2.抓取底层Firmware的log信息 通过Bluetooth芯片的LED0 Pin可以输出Firmware的log信息,根据这些信息可以
2014-05-05 19:28:26
2780
转载 用FTS分析蓝牙数据包
1.简介 FTS软件相当于蓝牙的数据分析仪器,它可以抓取通过蓝牙IC的数据包,从包中我们可以看到HCI,L2CAP等各层的封包数据,是一个十分有用的软件。2.HCI的command和event以及Data的格式HCI Command Format:HCI Event Format:HCI ACL Data Format:HCI SCO Data For
2014-05-05 19:27:43
1822
转载 在HCI层看从inquiry的整个过程
一.概述 在windows下寻找远端蓝牙设备,从最开始的inquiry寻找设备,到连接设备,到最后配对完成,整个HCI层所发的command和event以及Data包可以反应整个蓝牙的inquiry,pair等原理和过程。这篇笔记就是分析这个过程,结合Spec的具体描述,以此熟悉蓝牙的配对流程。二.Inquiry流程 这个流程主要是inquiry远端的蓝牙设备,不进行连
2014-05-05 19:27:04
3357
转载 在HCI层ACL Connection的建立
一.概述 上一篇博文介绍的是inquiry的整个过程中HCI层的command和event。在寻找到有效的远端蓝牙设备后,开始建立ACL连接,这里仅仅反应HCI层的数据包,对于LM层和Baseband层的数据可能需要抓取FW的log进行查看。二.建立ACL连接的过程1. Create_Connection command 该命令参数如下:BD_ADDR,
2014-05-05 19:26:07
2139
转载 FTS抓包看L2CAP Connection的建立(二)
1.概述 前面一篇博文已经介绍到远端设备对本地的Connection request进行了response,目前L2CAP的连接处于pending状态。这篇将继续抓取下面的一些packets,来看L2CAP Connection的建立过程。 2.一些FrameFrame50:HCI收到ACL Data,传到L2CAP层,是远端的information request
2014-05-05 19:25:34
1849
转载 FTS抓包看L2CAP Connection的建立(一)
一.概述 在前面的文章中介绍了inquiry和ACL connection的建立过程。这个连接建立后,L2CAP signaling channel(CID = 0x0001)就已经存在,可以进行L2CAP连接二.基本概念HCI ACL Data Format:Connection的建立(一)" title="FTS抓包看L2CAP Connection的建立(一)"
2014-05-05 19:24:43
2679
转载 FTS抓包看蓝牙验证的过程
1.概述 在进行蓝牙设备的连接时,为了保护个人隐私和数据保密的需要,需要进行验证。2.一些FrameFrame74:本地发送Authentication requset command00010001 00000100 00000010 00001001 00000000Opcode: 0x0411Connection Handle: 0x09 =
2014-05-05 19:23:13
4327
2
转载 Bluedroid的结构和代码分布
在android4.2中,Google更换了android的蓝牙协议栈,从Bluez换成Bluedroid,我也是初涉这个方面,顺便记录一下。http://source.android.com/devices/bluetooth.htmlandroid development对于4.3蓝牙的介绍:android提供BlueDroid作为默认的协议栈,BlueDroid分为两
2014-05-05 19:22:24
2224
转载 FTS抓包看AVDTP
1.概述 测试过程为打开Audio连接,没有听音乐,人后断开Audio连接,主要目的是为了测试AVDTP的工作流程。2.Frame分析 首先贴出抓取的关于AVDTP的包: 在L2CAP层,分别由Maste和Slave建立了两条关于AVDTP的L2CAP连接,并完成了configure的过程,如下:我们可以看到AVDTP的主要Signaling的
2014-05-05 19:21:41
2399
转载 Android4.2和4.3中enable bluetooth
以下是基于Android 4.2代码,对Bluetooth BR/EDR Enable process的分析。BluetoothAdapter类代表的是local device Bluetooth adapter,而BluetoothDevice类代表的是remote Bluetooth device。在Android 4.3中引入了一个新的类BluetoothManager,它是一个high l
2014-05-05 19:20:46
1711
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人