Ubuntu12.04 64位下载编译 Android 4.2源码
2013-06-21 18:21
459 查看
废话不多说,直接上步骤
一、下载源码
1、Android源码采用的是Git工具管理,所以一定要安装Git,其次下载源码也需要很多关联包,最好在执行下载任务之前全都下载配置好。
zk@zk-K45VM:~/AndroidSource$ 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 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils
xsltproc gcc-multilib lib32readline5-dev lib32z-dev (lib32readline-gplv2-dev lib32z1-dev)
这一句差不多安装了所需的所有包。
为了下载更顺利,先修改hosts
zk@zk-K45VM:~$ sudo vim /etc/hosts
增加以下内容
74.125.31.82 www.googlesource.com
74.125.31.82 android.googlesource.com
203.208.46.172 cache.pack.google.com
59.24.3.173 cache.pack.google.com
2、下载repo
zk@zk-K45VM:~$ wget https://dl-ssl.google.com/dl/googlesource/git-repo/repo
zk@zk-K45VM:~$ chmod a+x repo
zk@zk-K45VM:~$ cp repo /bin/
3、准备下载源码
zk@zk-K45VM:~$ mkdir AndroidSource
zk@zk-K45VM:~$ cd AndroidSource
zk@zk-K45VM:~/AndroidSource$ repo init -u https://android.googlesource.com/platform/manifest
执行这句Android主线上的代码下载下来(老罗是这样说的,我没测试),我这里只下载4.2的源码,所以可以直接执行下面这句
zk@zk-K45VM:~/AndroidSource$ repo
init -u https://android.googlesource.com/platform/manifest -b android-4.2_r1
zk@zk-K45VM:~/AndroidSource$
repo sync
此时就开始下载源码了,时间挺漫长的,完全取决于你网络环境的网速,我是下班前开始下,第二天早晨到公司反正已经下好了,中间可能有中断,中断后继续执行 repo
sync 即可。
可能下载过程中还会遇到其他的问题,可参考 我是看的这个链接
出现以下情况时,说明已经下载完成
此时继续执行 repo sync 可以重新校对下载的源码,若是有问题或遗漏了一些文件会重新下载,并从.repo目录中导出到实际源码中
二、编译源码
执行
zk@zk-K45VM:~/AndroidSource$ source
build/envsetup.sh
会出现
然后直接执行make即可
zk@zk-K45VM:~/AndroidSource$
make
也可以执行
zk@zk-K45VM:~/AndroidSource$
make -j4
表示用四个线程来编译
第一次编译我用了大约两三个小时(i7
四核 2.3,4G内存),反正是吃饭回来就已经编译好了,编译的时候机器非常的卡,最好就让它只做这一件事。
将编译好的Android镜像放到模拟器
1:设置环境变量:
~/Android$ export PATH=$PATH:~/AndroidSource/out/host/linux-x86/bin
~/Android$ export ANDROID_PRODUCT_OUT=~/AndroidSource/out/target/product/generic
其中,~/AndroidSource/out/host/linux-x86/bin有我们要执行的emulator命令,而~/AndroidSource/out/target/product/generic是Android镜像存放目录
2:运行模拟器
模拟器运行需要四个文件,分别是Linux Kernel镜像zImage和Android镜像文件system.img、userdata.img和ramdisk.img。执行emulator命令时,如果不带任何参数,则Linux Kernel镜像默认使用~/AndroidSource/prebuilts/qemu-kernel/arm/kernel-qemu-armv7目录下的kernel-qemu文件,而Android镜像文件则默认使用ANDROID_PRODUCT_OUT目录下的system.img、userdata.img和ramdisk.img,也就是我们刚刚编译出来的镜像问题。
~/AndroidSource$ emulator -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7
-sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ramdisk.img
出现问题:qemu: could not load initrd 'ramdisk.img'
网上有更改权限解决: chmod 777 ~/out/target/product/generic
chmod 777 ~/out/target/product/generic/ramdisk.img
这里还是不行,所以就把 -ramdisk ramdisk.img 去掉,结果运行成功
此时源码下载编译结束
一、下载源码
1、Android源码采用的是Git工具管理,所以一定要安装Git,其次下载源码也需要很多关联包,最好在执行下载任务之前全都下载配置好。
zk@zk-K45VM:~/AndroidSource$ 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 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils
xsltproc gcc-multilib lib32readline5-dev lib32z-dev (lib32readline-gplv2-dev lib32z1-dev)
这一句差不多安装了所需的所有包。
为了下载更顺利,先修改hosts
zk@zk-K45VM:~$ sudo vim /etc/hosts
增加以下内容
74.125.31.82 www.googlesource.com
74.125.31.82 android.googlesource.com
203.208.46.172 cache.pack.google.com
59.24.3.173 cache.pack.google.com
2、下载repo
zk@zk-K45VM:~$ wget https://dl-ssl.google.com/dl/googlesource/git-repo/repo
zk@zk-K45VM:~$ chmod a+x repo
zk@zk-K45VM:~$ cp repo /bin/
3、准备下载源码
zk@zk-K45VM:~$ mkdir AndroidSource
zk@zk-K45VM:~$ cd AndroidSource
zk@zk-K45VM:~/AndroidSource$ repo init -u https://android.googlesource.com/platform/manifest
执行这句Android主线上的代码下载下来(老罗是这样说的,我没测试),我这里只下载4.2的源码,所以可以直接执行下面这句
zk@zk-K45VM:~/AndroidSource$ repo
init -u https://android.googlesource.com/platform/manifest -b android-4.2_r1
zk@zk-K45VM:~/AndroidSource$
repo sync
此时就开始下载源码了,时间挺漫长的,完全取决于你网络环境的网速,我是下班前开始下,第二天早晨到公司反正已经下好了,中间可能有中断,中断后继续执行 repo
sync 即可。
可能下载过程中还会遇到其他的问题,可参考 我是看的这个链接
出现以下情况时,说明已经下载完成
Fetching projects: 100% (329/329), done. Checking out files: 100% (9390/9390), done.out files: 44% (4162/9390) Checking out files: 100% (6764/6764), done.out files: 0% (2/6764) Checking out files: 100% (24607/24607), done.ut files: 40% (10053/24607) Checking out files: 100% (18696/18696), done.ut files: 1% (357/18696) Checking out files: 100% (361/361), done.ng out files: 48% (175/361) Checking out files: 100% (175/175), done.ng out files: 43% (76/175) Checking out files: 100% (2407/2407), done. out files: 1% (39/2407) Checking out files: 100% (137/137), done.ng out files: 44% (61/137) Checking out files: 100% (40775/40775), done.ut files: 14% (5947/40775) Checking out files: 100% (93/93), done. Checking out files: 100% (450/450), done. Checking out files: 100% (5265/5265), done. out files: 35% (1853/5265) Checking out files: 100% (13/13), done.king out files: 15% (2/13) Syncing work tree: 100% (329/329), done.
此时继续执行 repo sync 可以重新校对下载的源码,若是有问题或遗漏了一些文件会重新下载,并从.repo目录中导出到实际源码中
二、编译源码
执行
zk@zk-K45VM:~/AndroidSource$ source
build/envsetup.sh
会出现
including device/asus/grouper/vendorsetup.sh including device/asus/tilapia/vendorsetup.sh including device/generic/armv7-a-neon/vendorsetup.sh including device/generic/armv7-a/vendorsetup.sh including device/generic/mips/vendorsetup.sh including device/generic/x86/vendorsetup.sh including device/lge/mako/vendorsetup.sh including device/samsung/maguro/vendorsetup.sh including device/samsung/manta/vendorsetup.sh including device/samsung/toroplus/vendorsetup.sh including device/samsung/toro/vendorsetup.sh including device/ti/panda/vendorsetup.sh including sdk/bash_completion/adb.bash
然后直接执行make即可
zk@zk-K45VM:~/AndroidSource$
make
也可以执行
zk@zk-K45VM:~/AndroidSource$
make -j4
表示用四个线程来编译
第一次编译我用了大约两三个小时(i7
四核 2.3,4G内存),反正是吃饭回来就已经编译好了,编译的时候机器非常的卡,最好就让它只做这一件事。
.............. Done! Install: out/target/product/generic/system/app/Browser.odex Install: out/target/product/generic/system/app/Browser.apk build/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/src Combining NOTICE files into HTML Combining NOTICE files into text Installed file list: out/target/product/generic/installed-files.txt Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img Running: 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.img zk@zk-K45VM:~/AndroidSource$
将编译好的Android镜像放到模拟器
1:设置环境变量:
~/Android$ export PATH=$PATH:~/AndroidSource/out/host/linux-x86/bin
~/Android$ export ANDROID_PRODUCT_OUT=~/AndroidSource/out/target/product/generic
其中,~/AndroidSource/out/host/linux-x86/bin有我们要执行的emulator命令,而~/AndroidSource/out/target/product/generic是Android镜像存放目录
2:运行模拟器
模拟器运行需要四个文件,分别是Linux Kernel镜像zImage和Android镜像文件system.img、userdata.img和ramdisk.img。执行emulator命令时,如果不带任何参数,则Linux Kernel镜像默认使用~/AndroidSource/prebuilts/qemu-kernel/arm/kernel-qemu-armv7目录下的kernel-qemu文件,而Android镜像文件则默认使用ANDROID_PRODUCT_OUT目录下的system.img、userdata.img和ramdisk.img,也就是我们刚刚编译出来的镜像问题。
~/AndroidSource$ emulator -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7
-sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ramdisk.img
出现问题:qemu: could not load initrd 'ramdisk.img'
网上有更改权限解决: chmod 777 ~/out/target/product/generic
chmod 777 ~/out/target/product/generic/ramdisk.img
这里还是不行,所以就把 -ramdisk ramdisk.img 去掉,结果运行成功
此时源码下载编译结束
相关文章推荐
- Ubuntu12.04 64位下,下载编译Android 2.3源码
- Android系统定制, Android 4.2源码的下载和编译
- Ubuntu12.04下Android4.0.4源码的下载及其编译过程
- Ubuntu 10.04(64位)下载并编译 Android 2.2 源码[只有11条命令]
- Ubuntu12.04下在Android4.0.4源码下载及其编译过程
- debian 6.0[64位]下android 4.1源码下载和编译
- Ubuntu 10.04(64位)下载并编译 Android 2.2 源码[只有11条命令]
- Ubuntu12.04下Android4.0.4源码的下载及其编译过程
- Android 4.2源码的下载和编译环境的安装及源码的编译
- Android 4.2源码的下载和编译环境的安装及源码的编译(跟着做能成功)
- Ubuntu 10.04(64位)下载并编译 Android 2.2 源码[只有11条命令]
- Ubuntu12.04下在Android4.0.4源码下载及其编译过程
- Ubuntu12.04下在Android4.0.4源码下载及其编译过程
- android 4.2 源码在64位Ubuntu编译
- Android_4.2_源码下载和编译环境安装及Android_4.2_源码编译
- Ubuntu12.04下Android4.0.4源码的下载及其编译过程
- Ubuntu 12.04(64位)下载并编译 Android 4.1 源码
- ubuntu12.04(64位)下编译android4.1.1源码过程
- Ubuntu12.04下在Android4.0.4源码下载及其编译过程
- Ubuntu 10.04(64位)下载并编译 Android 2.2 源码[只有11条命令]