`

原始Android的目标机代码结构

 
阅读更多
Google提供的Android包含了原始Android的目标机代码,主机编译工具、仿真环境,代码包经过解压缩后,第一级别的目录和文件如下所示:

.

|-- Makefile        (全局的Makefile)

|-- bionic          (Bionic含义为仿生,这里面是一些基础的库的源代码)

|-- bootloader      (引导加载器)

|-- build           (build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)

|-- dalvik          (JAVA虚拟机)

|-- development     (程序开发所需要的模板和工具)

|-- external        (目标机器使用的一些库)

|-- frameworks      (应用程序的框架层)

|-- hardware        (与硬件相关的库)

|-- kernel          (Linux2.6的源代码)

|-- packages        (Android的各种应用程序)

|-- prebuilt        (Android在各种平台下编译的预置脚本)

|-- recovery        (与目标的恢复功能相关)

`-- system          (Android的底层的一些库)

      bionic目录展开一个级别的目录如下所示:

bionic/

|-- Android.mk

|-- libc

|-- libdl

|-- libm

|-- libstdc++

|-- libthread_db

`-- linker

      bootloader目录展开的两个级别目录:

bootloader/

`-- legacy

    |-- Android.mk

    |-- README

    |-- arch_armv6

    |-- arch_msm7k

    |-- fastboot_protocol.txt

    |-- include

    |-- libboot

    |-- libc

    |-- nandwrite

    `-- usbloader

      build目录展开的一个级别的目录如下所示:

build/

|-- buildspec.mk.default

|-- cleanspec.mk

|-- core                       (各种以mk为结尾的文件,它门是编译所需要的Makefile)

|-- envsetup.sh

|-- libs

|-- target                     (包含board和product两个目录,为目标所需要文件)

`-- tools                      (编译过程中主机所需要的工具,一些需要经过编译生成)

      其中,core中的Makefile是整个Android编译所需要的真正的Makefile,它被顶层目录的Makefile引用。

      envsetup.sh是一个在使用仿真器运行的时候,用于设置环境的脚本。

      dalvik目录用于提供Android JAVA应用程序运行的基础————JAVA虚拟机。

      development目录展开的一个级别的目录如下所示:

development

|-- apps                       (Android应用程序的模板)

|-- build                      (编译脚本模板)

|-- cmds

|-- data

|-- docs

|-- emulator                   (仿真相关)

|-- host                       (包含windows平台的一些工具)

|-- ide

|-- pdk

|-- samples                    (一些示例程序)

|-- simulator                  (大多是目标机器的一些工具)

`-- tools

      在emulator目录中qemud是使用QEMU仿真时目标机器运行的后台程序,skins是仿真时手机的界面。

      samples中包含了很多Android简单工程,这些工程为开发者学习开发Android程序提供了很大便利,可以作为模板使用。

      external目录展开的一个级别的目录如下所示:

external/

|-- aes

|-- apache-http

|-- bluez

|-- clearsilver

|-- dbus

|-- dhcpcd

|-- dropbear

|-- elfcopy

|-- elfutils

|-- emma

|-- esd

|-- expat

|-- fdlibm

|-- freetype

|-- gdata

|-- giflib

|-- googleclient

|-- icu4c

|-- iptables

|-- jdiff

|-- jhead

|-- jpeg

|-- libffi

|-- libpcap

|-- libpng

|-- libxml2

|-- netcat

|-- netperf

|-- neven

|-- opencore

|-- openssl

|-- oprofile

|-- ping

|-- ppp

|-- protobuf

|-- qemu

|-- safe-iop

|-- skia

|-- sonivox

|-- sqlite

|-- srec

|-- strace

|-- tagsoup

|-- tcpdump

|-- tinyxml

|-- tremor

|-- webkit

|-- wpa_supplicant

|-- yaffs2

`-- zlib

      在external中,每个目录表示Android目标系统中的一个模块,可能有一个或者若干个库构成。其中:

      opencore为PV(PacketVideo),它是Android多媒体框架的核心。

      webkit是Android网络浏览器的核心。

      sqlite是Android数据库系统的核心。

      openssl是Secure Socket Layer,一个网络协议层,用于为数据通讯提供安全支持。

      frameworks目录展开的一个级别的目录如下所示:

frameworks/

|-- base

|-- opt

`-- policies

      frameworks是Android应用程序的框架。

      hardware是一些与硬件相关的库

      kernel是Linux2.6的源代码

      packages目录展开的两个级别的目录如下所示:

packages/

|-- apps

|   |-- AlarmClock

|   |-- Browser

|   |-- Calculator

|   |-- Calendar

|   |-- Camera

|   |-- Contacts

|   |-- Email

|   |-- GoogleSearch

|   |-- HTMLViewer

|   |-- IM

|   |-- Launcher

|   |-- Mms

|   |-- Music

|   |-- PackageInstaller

|   |-- Phone

|   |-- Settings

|   |-- SoundRecorder

|   |-- Stk

|   |-- Sync

|   |-- Updater

|   `-- VoiceDialer

`-- providers

    |-- CalendarProvider

    |-- ContactsProvider

    |-- DownloadProvider

    |-- DrmProvider

    |-- GoogleContactsProvider

    |-- GoogleSubscribedFeedsProvider

    |-- ImProvider

    |-- MediaProvider

    `-- TelephonyProvider

      packages中包含两个目录,其中apps中是Android中的各种应用程序,providers是一些内容提供者(在Android中的一个数据源)。

      packages中两个目录的内容大都是使用JAVA编写的程序,各个文件夹的层次结构是类似的。

      prebuilt目录展开的一个级别的目录如下所示:

prebuilt/

|-- Android.mk

|-- android-arm

|-- common

|-- darwin-x86

|-- linux-x86

`-- windows

      system目录展开的两个级别的目录如下所示:

system/

|-- bluetooth

|   |-- bluedroid

|   `-- brfpatch

|-- core

|   |-- Android.mk

|   |-- README

|   |-- adb

|   |-- cpio

|   |-- debuggerd

|   |-- fastboot

|   |-- include            (各个库接口的头文件)

|   |-- init

|   |-- libctest

|   |-- libcutils

|   |-- liblog

|   |-- libmincrypt

|   |-- libnetutils

|   |-- libpixelflinger

|   |-- libzipfile

|   |-- logcat

|   |-- logwrapper

|   |-- mkbootimg

|   |-- mountd

|   |-- netcfg

|   |-- rootdir

|   |-- sh

|   `-- toolbox

|-- extras

|   |-- Android.mk

|   |-- latencytop

|   |-- libpagemap

|   |-- librank

|   |-- procmem

|   |-- procrank

|   |-- showmap

|   |-- showslab

|   |-- sound

|   |-- su

|   |-- tests

|   `-- timeinfo

`-- wlan

    `-- ti
分享到:
评论

相关推荐

    android安卓贪吃蛇源代码

    【标题】"Android安卓贪吃蛇源代码"指的是在Android平台上实现的经典游戏“贪吃蛇”的编程源码。源代码是程序员用特定编程语言编写的原始程序文本,它揭示了游戏内部的工作机制,包括游戏逻辑、图形绘制、用户交互等...

    Android平台恶意代码检测通用脱壳机的设计.pdf

    脱壳机的主要目标是去除应用程序的保护层,揭示其内部代码结构,以便进行深入的静态分析。 文章首先介绍了Android平台的主流加固技术,这些技术通常包括代码混淆、反调试和反动态分析等手段,旨在防止恶意代码被...

    android登录和注册实例代码

    在登录按钮的点击事件中,调用Intent的构造函数,传入目标Activity和需要传递的数据,然后使用startActivity方法启动新的Activity。 安全方面,虽然SQLite数据库存储在本地,但为了防止数据泄露,应避免明文存储...

    HC_BLE助手_蓝牙透传APK代码_androidble_android_

    【标题】"HC_BLE助手_蓝牙透传APK代码_androidble_android_" 提供的是一个针对Android平台的蓝牙透传应用程序的源代码。该程序旨在实现设备间的蓝牙低功耗(BLE,Bluetooth Low Energy)透明传输功能,使得数据可以...

    Android 的应用程序结构分析:HelloActivity

    #### 三、HelloActivity源代码结构 ##### 1. 目录结构解析 HelloActivity的源代码位于Android目录下的`development/samples/HelloActivity/`。其主要结构如下: - **Android.mk**:定义了项目的编译规则,包括如何...

    android4.1 关联eclipse 源代码

    导入完成后,Eclipse可能会自动识别源代码结构,但有时可能需要手动配置。右键点击项目,选择“Properties”,然后在左侧导航栏中选择“Java Build Path”。在"Source"标签页中,添加新的源代码位置,指向`...

    android_browser.rar_android_android浏览器

    开发者可以导入这个项目到 ADT(Android Development Toolkit)中进行编译和运行,以了解具体的实现方式和代码结构。 【标签】"android" 和 "android浏览器" 指出此项目是关于 Android 开发,并且特别关注于如何与 ...

    Android官网原生DeskClock6.0源代码

    本文将基于提供的文件列表,详细阐述源代码结构和关键文件的作用,为开发者提供深入理解Android应用开发的入口。 1. **.gitignore**:这是一个配置文件,用于指示Git版本控制系统忽略特定类型的文件或目录。在...

    Android 8.0 系统自带 高通骁龙相机 SnapdragonCamera

    4. **代码结构与配置** 压缩包中的文件反映了Snapdragon Camera的开发和构建过程。`Android.mk`和`version.mk`是Android NDK项目的构建文件,用于编译和链接C/C++代码。`CleanSpec.mk`用于清理项目。`project....

    android手机远程视频移动检测的源代码

    【Android手机远程视频移动检测源代码详解】 在现代科技中,Android手机因其广泛普及和强大的硬件性能,常常被用于各种创新应用,其中之一就是将其作为移动摄像头进行远程视频监控。本项目"android手机远程视频移动...

    android运行assets apk代码

    1. **Assets目录**:在Android应用的资源结构中,Assets目录是一个特殊的地方,开发者可以将非结构化的数据,如文本文件、音频文件、XML文件或APK文件等放置在这里。这些文件不会被R类引用,但可以通过AssetManager...

    Android源代码反编译工具包

    3. **使用Apktool**:通过Apktool对APK进行解包,这将生成一个包含原始资源和smali代码的目录结构。 4. **反编译DEX文件**:使用dex2jar将.dex文件转换为.jar,然后利用JD-GUI或JAD进行Java源码级别的反编译。 5. ...

    android 查询工具源代码

    【标题】"Android 查询工具源代码"涉及到的是一个Android应用程序的开发,主要功能包括查询电话号码的归属地以及IP地址的查询。这个工具是开发者为了方便用户获取信息而设计的,可能是一个集成在手机上的小型实用...

    android开发项目目录结构.doc

    总结起来,Android项目的目录结构是精心设计的,旨在帮助开发者更好地组织代码和资源。理解每个部分的功能对于有效管理项目至关重要。随着学习的深入,开发者会发现更多关于Activity生命周期、资源管理和意图...

    Android代码-安卓版数独

    这个项目的主要目标是实现一个用户友好的界面,供玩家解决数独谜题,同时展示了如何在Android环境中应用数据结构和算法。 在数独游戏中,关键的算法包括生成数独谜题、检查数独的正确性以及解决数独。在这个安卓版...

    Android代码-安卓apk加壳工程

    在Android开发中,“安卓apk加壳工程”是一个常见的术语,指的是通过在原始APK(Android应用程序包)外部添加一层或多层包装,以实现特定功能或保护应用原代码的技术。这通常涉及到动态加载、代码混淆、反编译防御等...

    Android Porting Guide for embedded platforms

    自谷歌推出开源的Android平台以来,移动电话领域受到了极大的关注,并且在原始设备制造商(OEM)社区中也引发了强烈的兴趣,他们希望将Android定制到其他嵌入式平台,如上网本、机顶盒、汽车仪表盘等。将Android推广...

    Android的目录结构

    ### Android的目录结构详解 #### 一、引言 Android应用程序的目录结构是开发者必须熟悉的基础知识之一。合理的目录组织不仅有助于保持项目的清晰性与可维护性,还能提高开发效率。本文将详细介绍Android项目的各个...

    新版Android开发教程.rar

    将会支持 Google 可能发布的手机操作系统或者应用软件,共同开发名为 Android 的开放源代码的移动 系 统。 谷歌早在 2002 年就进入了移动领域,可是由于目前的手机操作系统企业和手机企业相对封闭,提高了 行业的...

    Android 3D游戏开发技术宝典-OpenGL ES 2.0 (吴亚峰) 源代码

    1.4.2 android应用程序的项目结构 14 1.4.3 android应用程序的调试 16 1.4.4 实际设备的联机调试 18 1.5 android应用程序运行的机制 19 1.5.1 应用程序的系统架构 19 .1.5.2 应用程序框架 20 ...

Global site tag (gtag.js) - Google Analytics