当前位置:文档之家› Android_4.2_源码下载和编译环境安装及Android_4.2_源码编译

Android_4.2_源码下载和编译环境安装及Android_4.2_源码编译

Android 4.2源码的下载和编译环境的安装及源码的编译Google于2012.11.14发布了Android4.2的源码,下面把本人在ubuntu10.04 的64位系统上下载源码,和编译源码做个记录备份,也供有需要的人参考,若是在下载编译安装Android源代码遇到问题,可加QQ群交流: 217706590,难免有错,敬请见谅,还忘勿吝啬指出。

源代码下载、编译环境安装、源代码编译和运行模拟器的可能出现的一些错误在本文最后一章节,若出现类似错误,可以参考。

1、源码的下载源代码的下载,首先需要安装以下软件:curl 和git-core1.1安装curl:在终端中执行:sudo apt-get install curl1.2安装git-core1.2.1在用户目录下新建bin文件在终端中执行:mkdir ~/bin将~/bin添加环境变量,作用是:要将git软件下载安装在此目录,在别的目录运行可能会找不到此软件,所以要添加到环境变量中在终端中执行:PA TH=~/bin:$PATH1.2.2安装git-core在终端中执行:curl https:///dl/googlesource/git-repo/repo§> ~/bin/repo给repo执行权限:chmod a+x ~/bin/repo1.3 下载源代码1.3.1进入要源代码将要保存的目录如我的源代码保存在:、/opt/android/src在终端中执行:cd /opt/android/src 进入到src目录中1.3.2 获取repo最新的配置repo init -u https:///platform/manifest§若是执行错误则用以下命令:~/bin/repo init -u https:///platform/manifest§1.3.3 下载源代码对于下载不同版本的android,指定一个manifest分支(即只指明android对应的版本),使用-b参数(即下载某个版本的源代码),如:对于4.2的版本,将命令修改为repo init -u https:///platform/manifest§ -b android-4.2_r1若是执行错误则用以下命令:~/bin/repo init -u https:///platform/manifest§ -b android-4.2_r1 执行以上命令后,会在/opt/android/src目录中生成一个.repo的目录,此目录保存了将要下载的源代码的相关信息同步获取源码#~/bin/repo sync如果中间出现中断,这个很正常,你可以再次输入~/bin/repo sync 命令来进行下载。

根据网速的不同,下载时间也有快慢,最好在睡觉前或下班后下载代码,由于源文件比较大,一般国内都要5小时左右甚至更久。

若是出现以下信息,表示代码以下载完成:Fetching projects: 100% (166/166), done.Syncing work tree: 100% (165/165), done.运行~/bin/repo sync 还可以重新校对下载的源码,若是有问题或遗漏了一些文件会重新下载,并从.repo目录中导出到实际源码中注:此步可能会出现下载错误,请查看本文最后部分的说明2、编译环境的安装首先若是没有修改源,请修改为国内的源,从而提高软件的下载安装的速度可以参考下面博客的内容添加一些速度快的源,如:台湾源、Ubuntu官方上海源、网易、搜狐、/houxn22/item/48f0f7d150657c16d80e4468安装编译所需的软件1、安装jdksudo apt-get install sun-java6-jdk2、安装其它一些编译所需软件在终端中执行: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 xsltproc基本只要安装以上软件即可,官方网站上说的其它一些软件或者设置可以不用理会。

注:此步可能会出现错误,请查看本文最后部分的说明3、编译源代码3.1编译初始化:在终端中执行:source build/envsetup.sh或:. build/envsetup.sh执行后输出:source build/envsetup.shincluding device/asus/grouper/vendorsetup.shincluding device/asus/tilapia/vendorsetup.shincluding device/generic/armv7-a-neon/vendorsetup.shincluding device/generic/armv7-a/vendorsetup.shincluding device/generic/mips/vendorsetup.shincluding device/generic/x86/vendorsetup.shincluding device/samsung/maguro/vendorsetup.shincluding device/samsung/manta/vendorsetup.shincluding device/samsung/toroplus/vendorsetup.shincluding device/samsung/toro/vendorsetup.shincluding device/ti/panda/vendorsetup.shincluding sdk/bash_completion/adb.bash3.2选择编译目标:lunch full-eng执行后会又以下信息提示:============================================PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=4.2TARGET_PRODUCT=fullTARGET_BUILD_VARIANT=engTARGET_BUILD_TYPE=releaseTARGET_BUILD_APPS=TARGET_ARCH=armTARGET_ARCH_V ARIANT=armv7-aHOST_ARCH=x86HOST_OS=linuxHOST_OS_EXTRA=Linux-2.6.32-45-generic-x86_64-with-Ubuntu-10.04-lucidHOST_BUILD_TYPE=releaseBUILD_ID=JOP40COUT_DIR=out============================================3.3编译代码:在终端中执行:make -j4-j4:表示用四个线程来编译:编译根据不同机器的配置不同所需时间也有很大差异,如本人电脑为intel i5-2300四核2.8,2G内存,晚上8点开始编译,将近凌晨2点才编译完成,所以编译源代码也最好是在睡觉时或下班后进行。

出现以下信息表示编译完成:target Java: ContactsTests (out/target/common/obj/APPS/ContactsTests_intermediates/classes)target Dex: ContactsDone!Install: out/target/product/generic/system/app/Browser.odexInstall: out/target/product/generic/system/app/Browser.apkNote: Some input files use or override a deprecated API.Note: Recompile with -Xlint:deprecation for details.Copying: out/target/common/obj/APPS/Contacts_intermediates/noproguard.classes.dex target Package: Contacts (out/target/product/generic/obj/APPS/Contacts_intermediates/package.apk)'out/target/common/obj/APPS/Contacts_intermediates/classes.dex' as 'classes.dex'... Processing target/product/generic/obj/APPS/Contacts_intermediates/package.apkDone!Install: out/target/product/generic/system/app/Contacts.odexInstall: out/target/product/generic/system/app/Contacts.apkbuild/tools/generate-notice-files.py out/target/product/generic/obj/NOTICE.txt out/target/product/generic/obj/NOTICE.html "Notices for files contained in the filesystem images in this directory:" out/target/product/generic/obj/NOTICE_FILES/srcCombining NOTICE files into HTMLCombining NOTICE files into textInstalled file list: out/target/product/generic/installed-files.txtTarget system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.imgRunning: mkyaffs2image -f out/target/product/generic/system out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img Install system fs image: out/target/product/generic/system.imgDroidDoc took 5331 sec. to write docs to out/target/common/docs/doc-comment-check编译可能出现的错误,请查看本文最后部分的说明4、运行模拟器在终端中执行:emulator运行模拟器可能出现的错误,请查看本文最后部分的说明模拟器运行截图:初始化:开机后的待机界面:待机二:主菜单一:主菜单二:设置菜单中查看本版号:锁屏一:锁屏二:5、相关问题的解决办法5.1 下载源代码可能会提示的错误5.1.1 error: Exited sync due to fetch errors...希望各位不要出现这个错误,出现这个错误就要折腾一会了首先继续repo sync,若是一直提示这个错误,那么就按照下面的方法来做吧:关于这个问题其实google是有说明的/source/downloading.html,为了防止连接数过多,每个ip都需要认证。

相关主题