- 浏览: 141640 次
- 性别:
- 来自: 广州
最新评论
-
SongRUyi88:
sb环境变量配置了没有,这样根本就启动不了
Win7 64位下配置jboss7 -
小小东:
不要配置环境变量吗???
Win7 64位下配置jboss7 -
hhb19900618:
你好 我这边老是看不到 log的输出是咋回事呢? logca ...
android开发log信息打印 -
saieuler:
写的太简洁了
软件设计的23中设计模式(转载) -
fxiaozj:
日期的处理,还有两个类没贴出来
常用+实用的java代码,网上摘的
以下内容转载于网上论坛。正确性未一一验证,但是看了部分结构解释正确。
Google提供的Android手机开发平台包含了原始Android的目标机代码,主机编译工具、仿真环境,代码包经过解压缩后,第一级别的目录和文件如下所示:
.
|-- Makefile (全局的Makefile)
|-- bionic (Bionic C库)
|-- bootloader (引导相关代码)
|-- build (build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)
|-- cts (Android兼容性测试套件标准)
|-- dalvik (JAVA虚拟机)
|-- development (程序开发所需要的模板和工具)
|-- external (目标机器使用的一些库,android使用的一些开源的模组)
|-- frameworks (应用程序的框架层 核心框架)
|-- fw_tools
|-- hardware (部分厂家开源的硬解适配层HAL代码)
|-- out (编译完成后的代码输出与此目录)
|-- kernel (Linux2.6的源代码)
|-- packages (Android的各种应用程序)
|-- prebuilt (Android在各种平台下编译的预置脚本)
|-- sdk (sdk及模拟器)
|-- system (底层文件系统库、应用及组件——C语言)
`-- vendor (厂商定制代码)
bionic目录展开一个级别的目录如下所示:
bionic 目录
|-- libc (C库)
| |-- arch-arm (ARM架构,包含系统调用汇编实现)
| |-- arch-x86 (x86架构,包含系统调用汇编实现)
| |-- bionic (由C实现的功能,架构无关)
| |-- docs (文档)
| |-- include (头文件)
| |-- inet (?inet相关,具体作用不明)
| |-- kernel (Linux内核中的一些头文件)
| |-- netbsd (?nesbsd系统相关,具体作用不明)
| |-- private (?一些私有的头文件)
| |-- stdio (stdio实现)
| |-- stdlib (stdlib实现)
| |-- string (string函数实现)
| |-- tools (几个工具)
| |-- tzcode (时区相关代码)
| |-- unistd (unistd实现)
| `-- zoneinfo (时区信息)
|-- libdl (libdl实现,dl是动态链接,提供访问动态链接库的功能)
|-- libm (libm数学库的实现,)
| |-- alpha (apaha架构)
| |-- amd64 (amd64架构)
| |-- arm (arm架构)
| |-- bsdsrc (?bsd的源码)
| |-- i386 (i386架构)
| |-- i387 (i387架构?)
| |-- ia64 (ia64架构)
| |-- include (头文件)
| |-- man (数学函数,后缀名为.3,一些为freeBSD的库文件)
| |-- powerpc (powerpc架构)
| |-- sparc64 (sparc64架构)
| `-- src (源代码)
|-- libstdc++ (libstdc++ C++实现库)
| |-- include (头文件)
| `-- src (源码)
|-- libthread_db (多线程程序的调试器库)
| `-- include (头文件)
`-- linker (动态链接器)
`-- arch (支持arm和x86两种架构)
bootloader目录展开的两个级别目录:
bootloader/
.
|-- bootloader (适合各种bootloader的通用代码)
| `-- legacy (估计不能直接使用,可以参考)
| |-- arch_armv6 (V6架构,几个简单的汇编文件)
| |-- arch_msm7k (高通7k处理器架构的几个基本驱动)
| |-- include (通用头文件和高通7k架构头文件)
| |-- libboot (启动库,都写得很简单)
| |-- libc (一些常用的c函数)
| |-- nandwrite (nandwirte函数实现)
| `-- usbloader (usbloader实现)
|-- diskinstaller (android镜像打包器,x86可生产iso)
`-- recovery (系统恢复相关)
|-- edify (升级脚本使用的edify脚本语言)
|-- etc (init.rc恢复脚本)
|-- minui (一个简单的UI)
|-- minzip (一个简单的压缩工具)
|-- mtdutils (mtd工具)
|-- res (资源)
| `-- images (一些图片)
|-- tools (工具)
| `-- ota (OTA Over The Air Updates升级工具)
`-- updater (升级器)
build目录展开的一个级别的目录如下所示:
.
|-- bootloader (适合各种bootloader的通用代码)
| `-- legacy (估计不能直接使用,可以参考)
| |-- arch_armv6 (V6架构,几个简单的汇编文件)
| |-- arch_msm7k (高通7k处理器架构的几个基本驱动)
| |-- include (通用头文件和高通7k架构头文件)
| |-- libboot (启动库,都写得很简单)
| |-- libc (一些常用的c函数)
| |-- nandwrite (nandwirte函数实现)
| `-- usbloader (usbloader实现)
|-- diskinstaller (android镜像打包器,x86可生产iso)
`-- recovery (系统恢复相关)
|-- edify (升级脚本使用的edify脚本语言)
|-- etc (init.rc恢复脚本)
|-- minui (一个简单的UI)
|-- minzip (一个简单的压缩工具)
|-- mtdutils (mtd工具)
|-- res (资源)
| `-- images (一些图片)
|-- tools (工具)
| `-- ota (OTA Over The Air Updates升级工具)
`-- updater (升级器)
build目录
|-- core (核心编译规则)
|-- history (历史记录)
|-- libs
| `-- host (主机端库,有android “cp”功能替换)
|-- target (目标机编译对象)
| |-- board (开发平台)
| | |-- emulator (模拟器)
| | |-- generic (通用)
| | |-- idea6410 (自己添加的)
| | `-- sim (最简单)
| `-- product (开发平台对应的编译规则)
| `-- security (密钥相关)
`-- tools (编译中主机使用的工具及脚本)
|-- acp (Android "acp" Command)
|-- apicheck (api检查工具)
|-- applypatch (补丁工具)
|-- apriori (预链接工具)
|-- atree (tree工具)
|-- bin2asm (bin转换为asm工具)
|-- check_prereq (检查编译时间戳工具)
|-- dexpreopt (模拟器相关工具,具体功能不明)
|-- droiddoc (?作用不明,java语言,网上有人说和JDK5有关)
|-- fs_config (This program takes a list of files and directories)
|-- fs_get_stats (获取文件系统状态)
|-- iself (判断是否ELF格式)
|-- isprelinked (判断是否prelinked)
|-- kcm (按键相关)
|-- lsd (List symbol dependencies)
|-- releasetools (生成镜像的工具及脚本)
|-- rgb2565 (rgb转换为565)
|-- signapk (apk签名工具)
|-- soslim (strip工具)
`-- zipalign (zip archive alignment tool)
其中,core中的Makefile是整个Android编译所需要的真正的Makefile,它被顶层目录的Makefile引用。
envsetup.sh是一个在使用仿真器运行的时候,用于设置环境的脚本。
dalvik目录用于提供Android JAVA应用程序运行的基础————JAVA虚拟机。
development目录展开的一个级别的目录如下所示:
|-- apps (一些核心应用程序)
| |-- BluetoothDebug (蓝牙调试程序)
| |-- CustomLocale (自定义区域设置)
| |-- Development (开发)
| |-- Fallback (和语言相关的一个程序)
| |-- FontLab (字库)
| |-- GestureBuilder (手势动作)
| |-- NinePatchLab (?)
| |-- OBJViewer (OBJ查看器)
| |-- SdkSetup (SDK安装器)
| |-- SpareParts (高级设置)
| |-- Term (远程登录)
| `-- launchperf (?)
|-- build (编译脚本模板)
|-- cmds (有个monkey工具)
|-- data (配置数据)
|-- docs (文档)
|-- host (主机端USB驱动等)
|-- ide (集成开发环境)
|-- ndk (本地开发套件——c语言开发套件)
|-- pdk (Plug Development Kit)
|-- samples (例程)
| |-- AliasActivity (?)
| |-- ApiDemos (API演示程序)
| |-- BluetoothChat (蓝牙聊天)
| |-- BrowserPlugin (浏览器插件)
| |-- BusinessCard (商业卡)
| |-- Compass (指南针)
| |-- ContactManager (联系人管理器)
| |-- CubeLiveWallpaper (动态壁纸的一个简单例程)
| |-- FixedGridLayout (像是布局)
| |-- GlobalTime (全球时间)
| |-- HelloActivity (Hello)
| |-- Home (Home)
| |-- JetBoy (jetBoy游戏)
| |-- LunarLander (貌似又是一个游戏)
| |-- MailSync (邮件同步)
| |-- MultiResolution (多分辨率)
| |-- MySampleRss (RSS)
| |-- NotePad (记事本)
| |-- RSSReader (RSS阅读器)
| |-- SearchableDictionary (目录搜索)
| |-- SimpleJNI (JNI例程)
| |-- SkeletonApp (空壳APP)
| |-- Snake (snake程序)
| |-- SoftKeyboard (软键盘)
| |-- Wiktionary (?维基)
| `-- WiktionarySimple(?维基例程)
|-- scripts (脚本)
|-- sdk (sdk配置)
|-- simulator (?模拟器)
|-- testrunner (?测试用)
`-- 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编译完成后,将在根目录中生成一个out文件夹,所有生成的内容均放置在这个文件夹中。out文件夹如下所示:
out/
|-- CaseCheck.txt
|-- casecheck.txt
|-- host
| |-- common
| `-- linux-x86
`-- target
|-- common
`-- product
主要的两个目录为host和target,前者表示在主机(x86)生成的工具,后者表示目标机(模认为ARMv5)运行的内容。
host目录的结构如下所示:
out/host/
|-- common
| `-- obj (JAVA库)
`-- linux-x86
|-- bin (二进制程序)
|-- framework (JAVA库,*.jar文件)
|-- lib (共享库*.so)
`-- obj (中间生成的目标文件)
host目录是一些在主机上用的工具,有一些是二进制程序,有一些是JAVA的程序。
target目录的结构如下所示:
out/target/
|-- common
| |-- R (资源文件)
| |-- docs
| `-- obj (目标文件)
`-- product
`-- generic
其中common目录表示通用的内容,product中则是针对产品的内容。
在common目录的obj中,包含两个重要的目录:
APPS 中包含了JAVA应用程序生成的目标,每个应用程序对应其中一个子目录,将结合每个应用程序的原始文件生成Android应用程序的APK包。
JAVA_LIBRARIES 中包含了JAVA的库,每个库对应其中一个子目录。
在默认的情况下,Android编译将生成generic目录,如果选定产品还可以生成其他的目录。generic包含了以下内容:
out/target/product/generic/
|-- android-info.txt
|-- clean_steps.mk
|-- data
|-- obj
|-- ramdisk.img
|-- root
|-- symbols
|-- system
|-- system.img
|-- userdata-qemu.img
`-- userdata.img
在generic/obj/APPS目录中包含了各种JAVA应用,与common/APPS相对应,但是已经打成了APK包。
system目录是主要的文件系统,data目录是存放数据的文件系统。
obj/SHARED_LIBRARIES中存放所有动态库。
obj/STATIC_LIBRARIES中存放所有静态库。
几个以img为结尾的文件是几个目标映像文件,其中ramdisk是作为内存盘的根文件系统映像,system.img是主要文件系统的映像,这是一个比较大的文件,data.img是数据内容映像。这几个image文件是运行时真正需要的文件。
发表评论
-
String.xml中product属性使用
2012-10-10 14:17 3517Android的资源文件string.xml会出现下面同名的字 ... -
onTouchEvent, onClick及onLongClick的调用机制(转载)
2012-09-13 11:08 1491该文属于转载,忘记是哪个作者了,抱歉。 针对屏幕上的一 ... -
android应用程序编译不产生odex
2012-05-21 17:18 2024在Android.mk中添加: LOCAL_DEX_P ... -
Android多国语言缩写
2012-05-21 11:32 1241相关文档: http://www.loc.gov/stand ... -
Android的Launcher显示默认apk
2012-05-21 11:27 4398Launcher源码的在res/xml目录下的default_ ... -
android开发log信息打印
2011-12-20 14:45 5502经常使用到log信息来打印并判断程序的运行情况。一般是在程序中 ... -
android当中的xml没有代码提示功能解决办法
2011-12-08 14:51 3227android中有比较多的xml文件,在编辑的时候如果没有出现 ... -
给Android应用开发者的十个建议(转载)
2011-12-06 17:42 807随着移动平台的发展 ... -
区分Activity的四种加载模式(转载)
2011-12-06 14:48 803在多Activity开发中,有可能是自己应用之间的Act ... -
Android应用的自动升级、更新模块的实现完整方案+参考程序代(转载)
2011-11-23 10:48 3159看到很多人求自动更新功能的实现模块结合网上资源 给出完整解决方 ... -
android使用9patch报错
2011-11-15 17:33 26579patch图片就是xxx.9.png图片,也是png的一种格 ... -
Android2.3 CTS测试简单说明(cron可节省时间)
2011-10-20 15:29 1499根据网上的教程,结合 ... -
众多Android 开源项目推荐,给力工作给力学习(转载)
2011-10-14 09:35 1225转自:http://www.cnblogs.com/Ter ... -
免费的Android UI库及组件推荐(转载)
2011-10-14 09:34 1224短短数年时间Android平台就已经形成了一个庞大而活跃的开发 ...
相关推荐
假如eclipse的sdk所在目录为D:\sdk\platforms\android-14,而下载的源码为android-14,将其拷至D:\sdk\platforms\android-14目录,新建sources目录。版本对应关系可以查看android-x中的source.properties文件。 重启...
android 8系统中的原码TextView.java, 可以查看官方的实现原理 ,对自定义 组件有一定 启发
在这个“Android音乐播放器原码”中,我们可以深入学习如何构建这样一个功能丰富的应用。 首先,让我们讨论标题中的关键点——音乐播放器。在Android上实现音乐播放,主要涉及以下技术点: 1. **媒体库访问**:...
出于这个目的,Android 将补充,而不会替代谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。本代码晚看易懂。是广大爱好者...
对于Android开发者来说,分析微信的源码不仅可以提升自身的编程技能,还能深入了解移动应用的架构设计、性能优化以及用户体验的打造。本文将基于“微信原代码下载”这一主题,探讨其中蕴含的关键知识点。 首先,...
- 使用Android Studio的调试工具,如Logcat,分析程序运行过程,定位并修复问题。 以上是对"android五子棋原码"的详细解析,涵盖了从UI设计到游戏逻辑实现的多个关键方面。深入理解这个项目,不仅能够提升Android...
反编的java 都用独立的类取代原码的类中类,匿名类。 虽然对于只使用一次对象值的(通常是监听类),都可以将独立类改为匿名类。但笔者认为, 将一大段匿名类代码放在方法的参数中,会影响阅读性, 倾向于独立类的...
通过分析这个项目的源码,开发者不仅可以学习到Android视频播放器的基本实现,还能了解到如何处理播放过程中的各种问题,以及如何进行性能优化。对于希望深入理解Android多媒体开发的程序员来说,这是一个非常有价值...
以上是基于提供的"android 音乐播放器原码"所涵盖的主要技术点,深入理解和实践这些知识点对于Android开发者来说是非常有价值的。通过研究和修改这个源代码,开发者可以学习到如何创建自己的音乐播放应用,并进一步...
1. **Android应用程序结构**:每一个Android应用都由一系列组件构成,包括Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)、ContentProvider(内容提供者)和Intent(意图)。通过研究源代码,...
Android源码下载是Android开发人员深入理解系统工作原理和进行定制化开发的重要步骤。源码提供了Android操作系统的底层...通过掌握源码的获取、编译和分析,开发者能更深入地理解Android的工作原理,从而提升开发能力。
Verilog 和 VHDL 是两种常用的硬件描述语言,用于描述数字电路的结构和行为。 在实现原码一位乘法器时,还需要进行仿真调试,以确保原码一位乘法器的正确性和可靠性。仿真调试可以使用 ModelSim、VCS 等EDA 软件来...
本文通过对给定的代码片段进行了详细分析,介绍了如何实现一位原码乘法的过程。通过了解这些基础知识,读者可以更好地理解计算机内部是如何执行乘法运算的。此外,熟悉这些底层实现有助于加深对计算机体系结构的理解...
"手机端安卓原码"指的是针对Android平台的源代码,用于与NRF52832进行通信。这通常涉及到Android应用开发,使用Java或Kotlin语言编写,可能包含BLE库,如Android BluetoothGatt API,用于连接、读取、写入和订阅NRF...
通过对这些源代码的学习和分析,我们可以深入了解Android系统如何实现闹钟功能。 首先,`DeskClock`是Android系统中的一个应用,它提供了时钟、闹钟、计时器和秒表等功能。在源代码中,我们可以找到关于闹钟设置、...
疯狂Android讲义书上所有例子原码part2 放心使用
2. **com**、**tck**、**android**、**org**: 这些目录通常代表Java包结构,其中包含了大量的类和接口。例如,`com.android`通常包含Android特定的类,如系统服务、应用框架等。`tck`可能表示技术兼容性套件,用于...
【Android愤怒的小鸟源码】是一个专为学习者设计的游戏开发资源,旨在帮助开发者深入了解游戏制作过程,特别是...通过深入分析和实践这个源码,开发者可以提升自己的Android游戏开发能力,并为今后的项目打下坚实基础。