Android源码学习

来源:互联网 发布:有淘宝开店条件 编辑:程序博客网 时间:2024/06/05 20:53
Android源码学习之旅:
1、在Ubuntu系统上搭建编译Android源码的环境:
   <1>下载VMWare虚拟机,在虚拟机上安装Ubuntu系统,在系统上安装显卡等驱动
   <2>打开terminal终端,用命令安装git工具和一些依赖包:
   执行sudo apt-get install git-core gnupg时出错
   E:could not get lock /var/lib/dpkg/lock - open
   E:unable to lock the administration directory(/var/lib/dpkg),is another process using it?
   分析可能是依赖包没有安装,于是替换成下面的命令:
   sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev
   执行成功,此时便安装好了git工具和一些依赖包
   <3>安装Java环境
   sudo add-apt-repository ppa:ferramroberto/java
   sudo apt-get update
   sudo apt-get install default-jre
   sudo apt-get install default-jdk
   <4>安装其他的依赖包
   sudo apt-get install flex bison gperf libsdl1.2-dev libesd0-dev build-essential zip curl valgrind
   <5>下载Android源码
   打开https://github.com/aosp-mirror/
   别人的百度网盘:百度云链接:http://pan.baidu.com/s/1mgiLn1A 密码:ekw4
   
   
2、Android的应用程序层:Home,contacts,phone,browser,calendar
   Android的应用程序框架层:
   ActivityManager
   PackageManager
   WindowManager
   TelephonyManager
   ContentProvider
   ResourceManager
   ViewSystem
   LocationManager
   NotificationManager
   XmppService
   
3、访问Ubuntu系统的root目录:
   第一次进入root步骤如下:
   <.执行 cd/
   <.执行 sudo passwd root
   <.按照提示输入密码
   <.执行 su root
   <.执行 cd root
   即可进入root目录
   第二次进入root步骤如下:
   <.执行 su
   <.输入密码
   即可进入root目录
   从root用户切回到user用户直接输入exit命令即可
   
4、win7与virtualbox中的Ubuntu共享文件:
   <.win7右键共享文件
   <.Ubuntu点击菜单栏的设备
   ->安装增强功能
   ->设备
   ->共享文件夹
   ->添加->其它->选择需要共享的文件->选中固定分配->确定
   ->Terminal终端进入root用户的/home/wanlijun目录
   ->新建挂载点mkdir android
   ->挂载共享文件 mount -t vboxsf android4.4_code(共享文件的名称) android(挂载点的路径)
   ->进入共享文件夹cd android,
   ->ls查看共享的文件
   
5、Android源码目录结构:
   应用程序层:packages/apps
   应用程序框架层:frameworks
   android运行时环境:libcore和dalvik
   运行库libraries:bionic
   硬件抽象层HAL:hardware
   Linux内核层:kernel
   android兼容性测试套件标准:cts
   java虚拟机:dalvik
   应用程序开发相关:development(开发者需要的一些例程及工具)
   android使用的一些开源模组:external
   编译完成后的输出目录:out
   x86和arm架构下预编译的一些资源:prebuilt
   SDK及模拟器:sdk
   底层文件系统库、应用及组件:system
   厂商定制代码:vendor
   硬件访问服务接口:frameworks/base/core/java/android/os
   硬件访问服务实现:frameworks/base/services/java/com/android/server
   硬件访问服务的JNI方法实现:frameworks/base/services/jni
   
6、Android系统分两层来支持硬件设备:
   在用户空间实现的硬件抽象层(HAL):封装硬件的实现细节和参数,不必公开代码
   在内核空间实现的硬件驱动模块:提供简单的硬件访问通道
   
7、Android系统支持硬件的开发流程:
   在android系统的内核空间中为一个硬件开发驱动程序
   在用户空间为该硬件添加一个硬件抽象层模块
   在应用程序框架层添加一个硬件访问服务(硬件访问服务运行在系统进程System中就可实现开机自启动)
   开发一个应用程序来访问该硬件服务