android源码编译历程

来源:互联网 发布:限制网速软件 编辑:程序博客网 时间:2024/06/03 15:34

    已经折腾了两周有余,编译android源码过程中步履维艰,从网上各种搜索解决了很多问题,在这里记录下来,也算是传递共享,希望大家不要在google和百度上面花费太多时间,把更多精力留在源码阅读上。

    对于新手,对android源码的编译一开始完全没有概念。随便选取了30G的虚拟机就开始工作,结果可想而知。最后奉劝,尽量分盘能分多大分多大,给虚拟机扩盘各种也是很头疼。最后,我在我的机器里分配了100G给ubuntu12.04.2,

   一开始,采用repo,git去下载源码,结果统统失败,可能有网速的原因。

    推荐国内一个持续更新的百度云链接,里面android的源码是用7Zip压缩的,亲测可用,而且好像持续更新。

   http://pan.baidu.com/s/1ngsZs

 前面的各种下载源码的坑在这一步之后总算是迈过去了,接下来就是编译工作。

  首先:切记,千万不要在windows下解压7Zip,会出现各种链接文件丢失,进而各种编译错误。

   在ubuntu中安装7zip

sudo apt-get install p7zip
解压直接用 7z x android-4.4.4_r1,直接解压到当前路径。

对于JDK,GCC的配置网上很多教程,如果编译过程中有遇到权限不够统统用chmod加权限。

预先安装的包,统统装上

如果是32位系统的话,在终端中运行


$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \
  libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \
  libxml2-utils xsltproc


如果是64位,运行


$ 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



根据Android官网的说法,编译Android源码执行下面三个命令即可
  ① source build/envsetup.sh
  ② lunch 此时要选择一个编译平台 运行lunch
    

  ③ make -jn
    接下来就是正式的make -jn了,注意n选择cpu核心数的2倍应该是靠谱的,网上也有说核心数加1的,我是四核,选j8编译过的。

编译完成之后在源码目录的out/target/product/generic/生成对应固件等文件,如下图所示,我们可以运行模拟器

 9. 配置环境,准备emulator

编译好android之后,emulator所在的目录:~/android/out/host/linux-x86/bin

ramdisk.img,system.img和userdata.img所在的目录:~/android/out/target/product /generic

kernel-qemu-armv7所在的目录:~/android-4.4.4_r1/prebuilts/qemu-kernel/arm

(1)编译成功后运行emulator提示No command 'emulator'

解决方法:

$ vim ~/.bashrc

在文件的最后添加如下指令

export ANDROID_PRODUCT_OUT=~/android-4.4.4_r1/out/target/product/generic //android-4.4.4_r1改成你自己的文件路径

ANDROID_PRODUCT_OUT_BIN=~/android-4.4.4_r1/out/host/linux-x86/bin //android-4.4.4_r1改成你自己的文件路径

export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN};

$ source ~/.bashrc 使配置生效

(2)接下来出现如下错误

emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.

If you are an Android SDK user, please use '@<name>' or '-avd <name>'
to start a given virtual device (see -help-avd for details).

Otherwise, follow the instructions in -help-disk-images to start the emulator

解决方法:

 vim ~/.bashrc

在文件的最后添加如下指令

export ANDROID_BUILD_TOP=~/android-4.4.4_r1

$ source ~/.bashrc 使配置生效

(3)再次执行下面的命令,运行emulator成功。

VBox:~/android-4.4.4_r1/out/target/product/generic$ emulator -system system.img -data userdata.img -ramdisk ramdisk.img


这里参考了

http://www.cnblogs.com/wi100sh/p/4337907.html

运行emulator还有些错误,参考这篇文章:

http://blog.csdn.net/penglijiang/article/details/9046591


原创粉丝点击