http://android.git.kernel.org/

Git:分布式的版本管理系统。

Windows上的Git程序 http://code.google.com/p/msysgit/downloads/list

克隆一个单独的子项目:

git clone git://android.git.kernel.org/ + project path.


克隆整个项目,需要下载一个python脚本repo,然后运行:

curlhttp://android.git.kernel.org/repo> ./repo

chmod a+x repo

mkdir myandroid

cd myandroid

repo init -ugit://android.git.kernel.org/platform/manifest.git

repo sync


今后需要更新就直接 repo sync就可以了。


截止目前,有将186个子项目,大小为9.6G


简述比较重要的子项目:

platform/build.git

build system编译和配置所需要的脚本和工具。

platform/bootable/bootloader/legacy.git

bootloader 参考代码

kernel/linux-2.6.git

内核源代码

kernel/qemu.git

Android的模拟器是基于QEMU开发的,QEMU是一个有名的开源虚拟机项目(详见http://bellard.org/qemu/),它可以提供一个虚拟的ARM移动设备。Android模拟器被命名为goldfish。

out目录是build输出目录,

由out/target和out/host组成。

Android源代码并成功编译后,

在out/target/product/generic目录下,可以获得三个镜像文件:

•ramdisk.img启动系统的ramdisk镜像 •system.img初始化好的系统镜像 •userdata.img初始化好的用户数据分区镜像 •

在out/host/linux-x86/bin目录找到emulator工具。


platform/bionic.git

Android并没有采用glibc作为C库,而是采用了Google自己开发的Bionic Libc。它的官方Toolchain也是基于Bionic Libc而并非glibc的。这使得使用或移植其他Toolchain来用于Android要比较麻烦。其只使用于内核移植,因为内核不需要C库。

platform/prebuilt.git

交叉编译工具链。

Notes:

与glibc相比,Bionic Libc有如下一些特点:

•采用BSD License,而不是glibc的GPL License; •大小只有大约200k,比glibc差不多小一半,且比glibc更快; •实现了一个更小、更快的pthread; •提供了一些Android所需要的重要函数,如”getprop”, “LOGI”等; •不完全支持POSIX标准,比如C++ exceptions,wide chars等; •不提供libthread_db 和 libm的实现

Android中所用的其他一些二进制工具也比较特殊:

•加载动态库时使用的是<machine>/system/bin/linker而不是常用的/lib/ld.so; •prelink工具不是常用的prelink而是apriori,其源代码位于” /build/tools/apriori” •strip工具也没有采用常用的strip,即“prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin”目录下的arm-eabi-strip,而是位于/out/host/linux-x86/bin/的soslim工具。

platform/dalvik.git

Dalvik 虚拟机源代码。

platform/ndk.git NDK

platform/sdk.git SDK

platform/packages/apps/XXX

手机上自带的应用程序的源码



Android 用一个custom build system去产生二进制、文档和工具。其基于GNU Make.

编译之前最好用make–v 和 gcc –v 查看其版本。 要求make的版本大于3.80。

如果运行下面过程中,提示某个 tools没装,就需要安装,比如bison jre jdk

如在ubuntu里#sudo aptitude install bison

JDK 最好手动安装。去oracle下二进制包,不要用gcj或者openjdk.

第一件事恐怕就是先执行. build/envsetup.sh,完成一些命令的初始化,这样就会多出一系列的命令。 这些命令-也就是envsetup.sh中的函数

% cd $TOP

% .build/envsetup.sh 特别注意格式,是一个点后紧接空格。点命令就是source 命令

# pick a configuration using choosecombo

% choosecombo #会让你作一些选择

% make -j4 PRODUCT-generic-user

如果需要编译一个debug版本

% make -j4 PRODUCT-generic-eng

“mclean”来清除你刚编译产生的目标文件。

也可以通过”mclobber”来删除所有目标编译的输出文件,也就相当于将整个/out目录删除。


更多相关文章

  1. GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
  2. Python3原生编写月份计算工具
  3. 如何在后台运行Linux命令?
  4. 一款常用的 Squid 日志分析工具
  5. No.11 使用firewall配置的防火墙策略的生效模式
  6. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  7. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  8. Android的logcat命令详解
  9. OKhttp3 get/post使用及获取网页源代码

随机推荐

  1. android:shape的使用(+圆角ListView)
  2. Android快速开关机
  3. 三.如何创建窗口模式的Activity
  4. Android自定义Dialog二次调用报错解决方
  5. Android中事件分发机制详解
  6. 今天遇到Android2.3.3能运行的程序到andr
  7. Android中解决FragmentPagerAdapter刷新F
  8. Delphi APP 開發入門(二)Android/iOS設定,He
  9. QQ android 登录模块简单分析
  10. Android(安卓)ListView刷新 (Handler/Ser