注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

东东的博客

江南烟雨,同大家一起分享

 
 
 

日志

 
 

android 源码下载  

2011-10-09 11:20:29|  分类: android相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

连这个网站都被封了。。。还要翻墙。。。干脆copy过来吧。

 

 

Initializing a Build Environment

The "Getting Started" section describes how to set up your local work environment, how to use Repo to get the Android files, and how to build the files on your machine. To build the Android source files, you will need to use Linux or Mac OS. Building under Windows is not currently supported.

Note: The source is approximately 2.6GB in size. You will need 10GB free to complete the build.

For an overview of the entire code-review and code-update process, see Life of a Patch.

To see snapshots and histories of the files available in the public Android repositories, visit the GitWeb web interface.


Setting up a Linux build environment

The Android build is routinely tested in house on recent versions of Ubuntu (10.04 and later), but most distributions should have the required build tools available. Reports of successes or failures on other distributions are welcome.

Note: It is also possible to build Android in a virtual machine. If you are running Linux in a virtual machine, you will need at least 8GB of RAM/swap and 12GB or more of disk space in order to build the Android tree.

In general you will need:


 

Python 2.4 -- 2.7, which you can download from python.org.


 

JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older. You can download both from java.sun.com.


 

Git 1.5.4 or newer. You can find it at git-scm.com.


 

(optional) Valgrind, a tool that will help you find memory leaks, stack corruption, array bounds overflows, etc. Download from valgrind.org.


 

Detailed instructions for Ubuntu 10.04+ follow.


Installing the JDK

The Sun JDK is no longer in Ubuntu's main package repository. In order to download it, you need to add the appropriate repository and indicate to the system which JDK should be used.

Java 6: for Gingerbread and newer


$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"  
$ sudo apt-get update  
$ sudo apt-get install sun-java6-jdk  

Java 5: for Froyo and older


$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy main multiverse"
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy-updates main multiverse"  
$ sudo apt-get update  
$ sudo apt-get install sun-java5-jdk  


Installing required packages

To set up your development environment, install the following required packages:


$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \    
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \    
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \    
libxml2-utils  


Configuring USB Access

Under GNU/linux systems (and specifically under Ubuntu systems), regular users can't directly access USB devices by default. The system needs to be configured to allow such access.

The recommended approach is to create a file
/etc/udev/rules.d/51-android.rules
(as the root user) and to copy the following lines in it. must be replaced by the actual username of the user who is authorized to access the phones over USB.


# adb protocol on passion (Nexus One) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>"
# fastboot protocol on passion (Nexus One)  SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>"  
# adb protocol on crespo (Nexus S)  SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>"  
# fastboot protocol on crespo (Nexus S)  SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>"  

Those new rules take effect the next time a device is plugged in. It might therefore be necessary to unplug the device and plug it back into the computer.

This is known to work on both Ubuntu Hardy Heron (8.04.x LTS) and Lucid Lynx (10.04.x LTS). Other versions of Ubuntu or other variants of GNU/linux might require different configurations.


Setting up a Mac OS X build environment

To build the Android files in a Mac OS environment, you need an Intel/x86 machine running MacOS 10.4 (Tiger), 10.5 (Leopard), or 10.6 (Snow Leopard). The Android build system and tools do not support the obsolete PowerPC architecture.

Android must be built on a case-sensitive file system because the sources contain files that differ only in case. We recommend that you build Android on a partition that has been formatted with the journaled file system HFS+. HFS+ is required to successfully build Mac OS applications such as the Android Emulator for OS X.


Creating a case sensitive disk image

If you want to avoid partitioning/formatting your hard drive, you can use a case-sensitive disk image instead. To create the image, launch Disk Utility and select "New Image". A size of 12GB is the minimum to complete the build, larger numbers are more future-proof. Using sparse images saves space while allowing to grow later as the need arises. Be sure to select "case sensitive, journaled" as the volume format.

You can also create it from a shell with the following command:


# hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg

This will create a .dmg file which, once mounted, acts as a drive with the required formatting for Android development. For a disk image named "android.dmg" stored in your home directory, you can add the following to your
~/.bash_profile
to mount the image when you execute "mountAndroid":


# mount the android file image function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }

Once mounted, you'll do all your work in the "android" volume. You can eject it (unmount it) just like you would with an external drive.


Installing required packages

Install XCode from the Apple developer site. We recommend version 3.0 or newer. If you are not already registered as an Apple developer, you will have to create an Apple ID in order to download.


 

Install MacPorts from macports.org.

Note: Make sure that
/opt/local/bin
appears in your path BEFORE
/usr/bin
. If not, add


export PATH=/opt/local/bin:$PATH

to your
~/.bash_profile
.


 

Get make, git, and GPG packages from MacPorts:


$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg

If using Mac OS 10.4, also install bison:


$ POSIXLY_CORRECT=1 sudo port install bison


Reverting from make 3.82

There is a bug in gmake 3.82 that prevents android from building. You can install version 3.81 using MacPorts by taking the following steps:


 

Edit
/opt/local/etc/macports/sources.conf
and add a line that says


file:///Users/Shared/dports

above the rsync line. Then create this directory:


$ mkdir /Users/Shared/dports


 

In the new
dports
directory, run


$ svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/ devel/gmake/


 

Create a port index for your new local repository:


$ portindex /Users/Shared/dports


 

Finally, install the old version of gmake with


$ sudo port install gmake @3.81


Setting a file descriptor limit

On MacOS the default limit on the number of simultaneous file descriptors open is too low and a highly parallel build process may exceed this limit.

To increase the cap, add the following lines to your
~/.bash_profile
:


# set the number of open files to be 1024 ulimit -S -n 1024


Next: Download the source

Your build environment is good to go! Proceed to downloading the source....

 

Downloading the Source Tree
Installing Repo

Repo is a tool that makes it easier to work with Git in the context of Android. For more information about Repo, see Version Control.

To install, initialize, and configure Repo, follow these steps:


 

Make sure you have a bin/ directory in your home directory, and that it is included in your path:


$ mkdir ~/bin
$ PATH=~/bin:$PATH  


 

Download the Repo script and ensure it is executable:


$ curl https://android.git.kernel.org/repo > ~/bin/repo
$ chmod a+x ~/bin/repo  


 

The MD5 checksum for repo is bbf05a064c4d184550d71595a662e098


Initializing a Repo client

After installing Repo, set up your client to access the android source repository:


 

Create an empty directory to hold your working files:


$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY  


 

Run
repo init
to bring down the latest version of Repo with all its most recent bug fixes. You must specify a URL for the manifest, which specifies where the various repositories included in the Android source will be placed within your working directory.


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

To check out a branch other than "master", specify it with -b:


$ repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo


 

When prompted, please configure Repo with your real name and email address. To use the Gerrit code-review tool, you will need an email address that is connected with a registered Google account. Make sure this is a live address at which you can receive messages. The name that you provide here will show up in attributions for your code submissions.


 

A successful initialization will end with a message stating that Repo is initialized in your working directory. Your client directory should now contain a
.repo
directory where files such as the manifest will be kept.


Getting the files

To pull down files to your working directory from the repositories as specified in the default manifest, run


$ repo sync

The Android source files will be located in your working directory under their project names. The initial sync operation will take several minutes to complete. For more about
repo sync
and other Repo commands, see Version Control.


Verifying Git Tags

Load the following public key into your GnuPG key database. The key is used to sign annotated tags that represent releases.


$ gpg --import

Copy and paste the key(s) below, then enter EOF (Ctrl-D) to end the input and process the keys.


-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.2.2 (GNU/Linux) mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7 8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq /HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5 jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4 MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9 b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI 2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+ OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM= =Wi5D -----END PGP PUBLIC KEY BLOCK-----

After importing the keys, you can verify any tag with


$ git tag -v TAG_NAME


Next: Build the code

You now have a complete local copy of the Android codebase. Continue on to building....

 

Building the System

The basic sequence of build commands is as follows:


Initialize

Initialize the environment with the
envsetup.sh
script. Note that replacing "source" with a single dot saves a few characters, and the short form is more commonly used in documentation.


$ source build/envsetup.sh

or


$ . build/envsetup.sh


Choose a Target

Choose which target to build with
lunch
. The exact configuration can be passed as an argument, e.g.


$ lunch full-eng

The example above refers to a complete build for the emulator, with all debugging enabled.

If run with no arguments
lunch
will prompt you to choose a target from the menu.

All build targets take the form BUILD-BUILDTYPE, where the BUILD is a codename referring to the particular feature combination:

Build name Device Notes
generic emulator lowest-common denominator
full emulator fully configured with all languages, apps, input methods
full_crespo crespo
full
build running on Nexus S ("crespo")

and the BUILDTYPE is one of the following:

Buildtype Use
user limited access; suited for production
userdebug like "user" but with root access and debuggability; preferred for debugging
eng development configuration with additional debugging tools

For more information about building for and running on actual hardware, see Building for devices


Build the Code

Build everything with
make
. GNU make can handle parallel tasks with a
-jN
argument, and it's common to use a number of tasks N that's between 1 and 2 times the number of hardware threads on the computer being used for the build. E.g. on a dual-E5520 machine (2 CPUs, 4 cores per CPU, 2 threads per core), the fastest builds are made with commands between
make -j16
and
make -j32
.


$ make -j4


Run It!

You can either run your build on an emulator or flash it on a device. Please note that you have already selected your build target with
lunch
, and it is unlikely at best to run on a different target than it was built for.


Flash a Device

To flash a device, you will need to use
fastboot
, which should be included in your path after a successful build. Place the device in fastboot mode either manually by holding the appropriate key combination at boot, or from the shell with


$ adb reboot bootloader

Once the device is in fastboot mode, run


$ fastboot flashall -w

The
-w
option wipes the
/data
partition on the device; this is useful for your first time flashing a particular device, but is otherwise unnecessary.

For more information about building for and running on actual hardware, see Building for devices


Emulate an Android Device

The emulator is added to your path automatically by the build process. To run the emulator, type


$ emulator


Using ccache

ccache is a compiler cache for C and C++ that can help make builds faster. In the root of the source tree, do the following:


$ export USE_CCACHE=1
$ export CCACHE_DIR=/<path_of_your_choice>/.ccache  
$ prebuilt/linux-x86/ccache/ccache -M 20G  

You can watch ccache being used by doing the following:


$ watch -n1 -d prebuilt/linux-x86/ccache/ccache -s

On OSX, you should replace
linux-x86
with
darwin-x86
.


Troubleshooting Common Build Errors
Wrong Java Version

If you are attempting to build froyo or earlier with Java 1.6, or gingerbread or later with Java 1.5,
make
will abort with a message such as


************************************************************
You are attempting to build with the incorrect version  of java.    
Your version is: WRONG_VERSION.  The correct version is: RIGHT_VERSION.    
Please follow the machine setup instructions at      
http://source.android.com/download  
************************************************************  

This may be caused by


 

failing to install the correct JDK as specified on the Initializing page. Building Android requires Sun JDK 5 or 6 depending on which release you are building.


 

another JDK that you previously installed appearing in your path. You can remove the offending JDK from your path with:


$ export PATH=${PATH/\/path\/to\/jdk\/dir:/}


Python Version 3

Repo is built on particular functionality from Python 2.x and is unfortunately incompatible with Python 3. In order to use repo, please install Python 2.x:


$ apt-get install python


Gmake Version 3.82

There is a bug in
make
version 3.82 on Mac OS that prevents building Android.

TODO: what the error looks like with GNU make 3.82 on older builds that don't explicitly detect it.

Follow the instructions on the Initializing page for reverting GNU make from 3.82 to 3.81.


Case Insensitive Filesystem

If you are building on an HFS filesystem on Mac OS X, you may encounter an error such as


************************************************************
You are building on a case-insensitive filesystem.  
Please move your source tree to a case-sensitive filesystem.  ************************************************************  

Please follow the instructions on the Initializing page for creating a case-sensitive disk image.


No USB Permission

On most Linux systems, unprivileged users cannot access USB ports by default. If you see a permission denied error, follow the instructions on the Initializing page for configuring USB access.

If adb was already running and cannot connect to the device after getting those rules set up, it can be killed with
adb kill-server
. That will cause adb to restart with the new configuration

 

  评论这张
 
阅读(1514)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017