Ubuntu12.04(64bit) 下编译安装 Android4.0及4.22系统

这段时间因为实验需要,所以编译了Android4.0和4.2.2系统源码,网上也有些教程,不过都多多少少有些错误,另外就是由于每个人编译时环境的差别等,具体的过程和遇到的错误可能不一样,不过大致的过程还是一样的,我就把我这编译时的步骤和遇到的一些问题列出来吧~

1. 安装Ubuntu12.04 64位,我是在virtualbox下虚拟安装的,具体过程自行百度~

2.下载源码,我没有用vpn,直接在网上搜到的源码包,感谢万能的百度云~

3.安装jdk.我用的是jdk1.6.0_45,用openjdk会有问题的,如果Ubuntu中自带了openjdk, 需要卸载。(4.0和4.2.2都是jdk1.6)

4.安装必要的库。这部分可以参考网上的其他博客,大部分库都给出了,我当时装的库如下:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev   
lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev g++-multilib  
 mingw32 tofrodos python-markdown libxml2-utils xsltproc gcc-multilib  lib32readline-gplv2-dev

这些库也是参考的其他人的博客,编译时发现这些是不全的,不过不用担心,后面需要的时候再装就是了~

5. 初始化参数和变量: cd到你的源码目录,然后

$ source build/envsetup.sh

6. lunch 然后选1

7. make


8.然后就是“出现问题-查问题-解决问题”的环节,感谢万能的度娘和Google,我遇到的问题如下(当然还有些我没遇到你可能遇到的,请自行查询了):

Error:
frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base ‘android::KeyedVector<android::String8, android::sp<AaptDir> >’ are not found by unqualified lookup
frameworks/base/include/utils/KeyedVector.h:193:31: note: use ‘this->indexOfKey’ instead
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/AaptAssets.o] Error 1
FIX1: vi frameworks/base/tools/aapt/Android.mk
Add '-fpermissive' to line 31:
LOCAL_CFLAGS += -Wno-format-y2k -fpermissive

Fix2: sudo apt-get install zlib1g-dev    sudo apt-get install lib64z1-dev or sudo apt-get install lib32z1-dev


Error:
程序“javac”已包含在下列软件包中:(java,jar is as same)

Fix: sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/SunJDK/jdk1.6.0_22/bin/javac 300


Error:
make: *** No rule to make target `run-java-tool', needed by `out/target/common/docs/doc-comment-check-timestamp'.  Stop.

Fix:
etc/profile : export ANDROID_JAVA_HOME=$JAVA_HOME 
source /etc/profile


Error:
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] 
Fix: sudo apt-get install lib32ncurses5-dev or sudo aplt-get install libncurses5-dev


Error:
latform_types.h:12:22: 致命错误: X11/Xlib.h:没有那个文件或目录  
编译中断。  
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_renderer_intermediates/main.o] 错误 1
Fix:
sudo apt-get install libx11-dev or sudo apt-get install x11-dev

Error:
/usr/bin/ld: cannot find -lX11
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/lib/libOpenglRender.so] Error 1
Fix:
sudo apt-get installibgl1-mesa-glx:i386
sudo apt-get install libx11-dev:i386


Error:
development/tools/emulator/opengl/host/libs/Translator/GLcommon/GLDispatch.cpp:22:20: fatal error: GL/glx.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon_intermediates/GLDispatch.o] Error 1
Fix:
sudo apt-get install libgl1-mesa-dev 


Error:
make: *** [out/host/linux-x86/obj/lib/libGLES_CM_translator.so] Error 1
Fix:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so 


(在网上搜到上面的解决方法,可是按照上述方法做了,问题依旧。经过多方实验,才发现问题所在。通过apt-get install的库不是libGL.so.1.2了。而是libGL.so.1.2.0.
所以大家在创建链接的时候最好去/usr/lib/i386-linux-gnu/mesa/这个目录下看看libGL的库版本,不要完全按照网上的照抄。现在网上的都是“sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so ”而我的是sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0  /usr/lib/libGL.so 。可能库最近升级了。)

9. 解决make遇到的问题后,什么样子代表成功编译了呢?如下



10. 启动Emulator

想启动Emulator,是要配置下环境变量的:

/etc/profile:
export ANDROID_JAVA_HOME=$JAVA_HOME
export PATH=/home/yagami/android/out/host/linux-x86/bin:$PATH
export ANDROID_PRODUCT_OUT=/home/yagami/android/out/target/product/generic
export ANDROID_BUILD_TOP=/home/yagami/android

启动后如下:



ok,小伙伴就此可以愉快的读源码,改源码了~

4.0过程和这个相似,遇到问题要尽快网上查,大部分都是缺某个库,文件链接等问题,万能的互联网都有的~

参考链接:

http://www.cnblogs.com/qianxudetianxia/p/3681890.html

http://blog.csdn.net/oldmtn/article/details/9189509

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值