初始化编译环境 下载源代码

发布时间:2016-12-8 8:21:17 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"初始化编译环境 下载源代码",主要涉及到初始化编译环境 下载源代码方面的内容,对于初始化编译环境 下载源代码感兴趣的同学可以参考一下。

初始化编译环境 http://blog.csdn.net/snowolf_538/article/details/6697336 近日,下载了ANDROID的源码尝试进行编译,故针对其过程,根据Google的官方说明,进行一次翻译,其原始网址为http://source.android.com/source/index.html,本文只针对Linux环境下的步骤进行翻译。   注意:源代码的大小大概2.6G,至少需要10G的空闲空间来进行编译。(snowolf_538:我下载的Gingerbread总共大概占了近6个G) 注意:使用虚拟机Linux也是可以编译ANDROID源码的,但是需要至少8G的内存/交换空间和至少12G的硬盘空间。(snowolf_538:事实上,不理解此处为什么需要8G的内存/交换空间,我使用的是Ubuntu 11.04版本的虚拟机,只设置了1G的内存和2G的交换空间,编译没有问题)   通常来讲,需要: Python 2.4 -- 2.7,你可以从http://www.python.org/download/下载JDK6(如果编译Gingerbread或者更新的版本),JDK5(Froyo或者更老的版本),你可以从http://java.sun.com/javase/downloads/下载Git 1.5.4或者更新,你可以从http://git-scm.com/download下载(可选)Valgrind,一个可以帮助发现内存泄露、栈损坏和数组越界的工具,你可以从http://valgrind.org/downloads/current.html下载     以下步骤基于Ubuntu 10.04+   安装JDK   JDK不再在Ubuntu的主包库里面,所以需要根据ANDROID的版本号下载对应的JDK。 JDK6:Gingerbread或者更新 [plain] view plaincopyprint? $ 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   (snowolf_538:上面的第二句执行时会报错,说是无效的地址,我实际使用的是sudo add-apt-repository "deb http://archive.canonical.com/ubuntu lucid parter") JDK5:Froyo或者更老 [plain] view plaincopyprint? $ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper main multiverse"  $ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates main multiverse"  $ sudo apt-get update  $ sudo apt-get install sun-java5-jdk   安装必需的包   安装以下必需的包以建立完整的编译环境 [plain] view plaincopyprint? $ 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   (snowolf_538:以上包安装时,其中lib32ncurses5-dev、ia32-libs、lib32readline5-dev和lib32z-dev无法找到,故使用libncurses5-dev、libreadline5-dev和libz-dev来代替,ia32-libs好像没有影响) 配置USB访问   在GNU/Linux系统下(特别是在Ubuntu系统下),一般用户默认不能访问USB设备,我们需要配置使其可以访问。 推荐的方法是用root用户创建/etc/udev/rules.d/51-android.rules文件,把以下的行拷贝到该文件中。<username>必须被替换成实际使用USB去访问手机的用户名。 [plain] view plaincopyprint? # 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>"   这些规则将会在下一次设备插上的时候生效。 下载源代码 http://blog.csdn.net/snowolf_538/article/details/6697530  安装Repo 在ANDROID,Repo是一个用来使Git使用更方便的工具。想了解更多的Repo的信息,请参见http://source.android.com/source/version-control.html。 为了安装、初始化和配置Repo,需要以下步骤: 确保在你的主目录下有一个bin目录,并且其在你的PATH环境变量中 [plain] view plaincopyprint? $ mkdir ~/bin  $ PATH=~/bin:$PATH     下载Repo脚本并确保其可执行 [plain] view plaincopyprint? $ curl https://android.git.kernel.org/repo > ~/bin/repo  $ chmod a+x ~/bin/repo   repo的MD5校验为:bbf05a064c4d184550d71595a662e098   初始化Repo客户端   安装完Repo之后,建立客户端以便能访问ANDROID源码库。 创建一个空目录以存放工作文件 [plain] view plaincopyprint? $ mkdir WORKING_DIRECTORY  $ cd WORKING_DIRECTORY     运行repo init以下载最新的repo版本 [plain] view plaincopyprint? repo init -u git://android.git.kernel.org/platform/manifest.git   当要CHECK OUT一个特定的分支而不是主分支时,使用-b选项 [plain] view plaincopyprint? $ repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo     当遇到提示时,请输入你的真实姓名和电子邮件地址 当成功下载完之后,你的工作目录下将创建一个.repo目录用来存放所有的manifest信息。   获取源代码 要下载ANDROID的源代码,使用以下命令 [plain] view plaincopyprint? $ repo sync   这将下载ANDROID的源代码到你的当前目录下面。最初的sync操作将需要几分钟时间(snowolf_538:事实上,取决于你的网速)。想了解更多的repo sync命令和其他repo命令的信息,请参考http://source.android.com/source/version-control.html   验证Git标签   装载以下公钥到你的GnuPG密钥数据库里。 [plain] view plaincopyprint? $ gpg --import   拷贝和粘贴以下的密钥,然后输入EOF(Ctrl+D)结束输入。 [plain] view plaincopyprint? -----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-----   导入密钥之后,可以使用以下命令来验证 [plain] view plaincopyprint? $ git tag -v TAG_NAME  编译和运行 http://blog.csdn.net/snowolf_538/article/details/6698359 编译ANDROID系统的基本顺序如下,   初始化   使用envsetup.sh脚本来初始化环境。 [plain] view plaincopyprint? $ source build/envsetup.sh   或者 [plain] view plaincopyprint? $ . build/envsetup.sh   选择编译目标   使用lunch命令来选择编译目标。确切的配置可以作为参数传进去,如: [plain] view plaincopyprint? $ lunch full-eng   上面的例子是一个针对emulator的完整的编译,包括所有的调试信息都是使能的。 如果不带参数运行lunch,将会提示选择编译目标。 所有的编译目标使用BUILD-BUILDTYPE的格式来指定,其中BUILD指向一个特定的功能组合,如下所示: Build Name Device Notes generic emulator 一般普通的配置 full emulator 完整配置,包括所有的语言、应用和输入法 full_crespo crespo 完整配置,运行在Nexus S("Crespo")   BUILDTYPE是下列之一: Buildtype Use user 有限制的访问,适合于产品 userdebug 和user相似,但是有root访问和调试能力,适合于调试 eng 开发配置,包含额外的调试工具   关于更多为在实际设备上运行编译的信息,请参考http://source.android.com/source/building-devices.html   编译代码   使用make来编译代码。GNU make能够使用-jN参数来指定并发任务数,通常来说N的取值是计算机上准备用来进行编译的硬件核心的1到2倍。例如,在双E5520的机器上(2个CPU,每个CPU有4个core,每个core有2个thread),最快速的编译可以指定为make -j16或者make -j32。   [plain] view plaincopyprint? $ make -j4   (snowolf_538:我在四核的机器上面指定make -j8,确实很快,4个核心都跑到100%)   运行   你可以在emulator上运行或者把它烧进实际的设备中运行。请注意你已经通过lunch选择了编译的目标,最好不要在一个不同的平台上运行。   烧进设备 我们使用fastboot来烧进设备。首先把设备置于fastboot模式,这可以通过按住特定的按键组合来实现,也可以通过以下shell命令。 [plain] view plaincopyprint? $ adb reboot bootloader     一旦设备处于fastboot模式,运行 [plain] view plaincopyprint? $ fastboot flashall -w   -w选项将擦除设备上的/data分区,这在第一次烧进设备的时候有用,但以后就不需要了。 关于更多为在实际设备上运行编译的信息,请参考http://source.android.com/source/building-devices.html   模拟ANDROID设备   emulator将会在编译过程中自动添加到你的PATH路径里,运行 [plain] view plaincopyprint? $ emulator 

上一篇:android textview和edittext中插入表情
下一篇:关于函数调用过程中的实参和形参问题

相关文章

相关评论