Ubuntu13.10编译Android4.3源码(一)
来源:互联网 发布:欧文体测数据 编辑:程序博客网 时间:2024/05/16 13:59
一直想把Android源码编译一下,最近工作不太忙,就抽出时间编译了一下,现在整理一下:
第一步下载:
由于Android源码比较大,而且现在google网站也不稳定,为了不耽误时间,我直接从百度网盘上下载了一个,Android4.3源码百度网盘,大概23g,还是很大的。
由于我是在Vmware里面装的ubuntu,然后需要把源码拷贝到里面,解压里面的压缩文件。
如果有VPN的话,可以自己参考老罗或者google一下repo下载的方法,这里我就不介绍了。
第二步准备编译:
由于是拷贝过来的源码,首先就是sh脚本权限问题,我比较懒,懒得一个一个找,就直接把整个目录都赋予了777权限。
进入源码目录
chmod 777 * -R
-R参数是递归 处理目录下的所有文件以及子文件夹
777是变更后的权限表示
还有一个问题就是从别人那边copy 解压后的软件包的!
在目录external\iptables\extensions中存在 不少文件名一样,只是大小写不一样的情况,比如libipt_ecn.c和libipt_ECN.c,将源码包中的文件与你当前编译包中的文件作对比,恢复为源码包中的文件就可以继续编译了。由于linux下的文件名命名规则与windows下的不同引起的.
在目录external\iptables\extensions和external/iptables/include/linux/netfilter下面对照着下面的在线源码更改一下:http://androidxref.com/4.3_r2.1/xref/external/iptables/extensions/
http://androidxref.com/4.3_r2.1/xref/external/iptables/include/linux/netfilter/
external\iptables这个目录下面的其他目录下面也有,也要对比一下,我当时是改了好几次的,为了方便
大家使用,我把这个iptables目录打包了一下,刚好文件也不大,上传到百度网盘:
iptables压缩文件
切记,一定要在linux系统下面解压替换这个问题,否则又会出现少文件的问题。
由于编译需要不少的工具,下面就直接安装一下:
sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \ python-markdown libxml2-utils xsltproc zlib1g-dev:i386
第三步编译:
初始化编译环境
切换到Android源码目录:
$ cd WORKING_DIRECTORY
执行下面命令,加载编译过程中用到的命令、环境变量:
$ source build/envsetup.sh
Ø 选择编译选项
执行下面的命令,从列表中选择一个编译项:
$ lunch
这些都是编译厂商版本,具体可以查一下android文档,测试用一般直接回车就行了,官网说明:
然后
输入下面命令开始编译:
$ make -jn
其中,-jn表示,n个线程同时编译,一般n的值为CPU核的2倍,但是,也要和你的Ubuntu的内存有关系,每个线程在编译时最少需要1G内存,如果你没有很多内存,还是直接使用make命令吧,否则,编译到后面会出错。
我用的是make -j4编译的(我电脑是4核i7的)
这个过程,如果是虚拟机的话,大概要2个多小时,如果是实体机的话,要看配置,一般在1个小时以上。
下面附上一张我编译成功的图片:
下面是一些常用的编译命令:
source build/envsetup.sh:加载编译命令,产生编译选项 lunch或lunch xxx-yyy:打印编译选项菜单或指定编译选项,xxx表示产品,yyy表示编译类型 make:根据lunch选项,编译Android系统,最后产出为:system.img,ramdisk.img,userdate.img m:和make命令一样 mm:从当前目录下开始向下编译目标 mmm:指定一个目录,仅编译指定目录下的目标 make snod:只将out/target/product/XXX/system/目录下的内容打包生成system.img,不会检查依赖关系 make bootimage:只将out/target/product/XXX/root/目录下的内容打包生成ramdisk.img
最后简单罗列一些容易出现的问题,不过只要第二步编译前的准备做好了,这些就不会出现了,这些基本都是我遇到的,哈哈。
/home/xuwt/android-sdks/platform-tools/aapt:
error while loading shared libraries: libz.so.1: cannot open shared object file:
No such file or directory
其实这个问题就是你64位的操作系统没有32位的类库,而android的SDK是要32位支持的
,如果没装就只能是报上面的错!
打开终端运行下面的命令:
sudo apt-get update
sudo apt-get install ia32-libs
运行第二个命令时有可能会说找不到或者被其它的所替代,然后再把终端列出的安装就好了.
Yacc: aidl <= frameworks/base/tools/aidl/aidl_language_y.y
prebuilts/misc/linux-x86/bison/bison -d -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] 断开的管道
sudo apt-get install bison
/usr/bin/ld: cannot find -lz
host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt)
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1
解决方法: sudo apt-get install zlib1g-dev sudo apt-get install lib64z1-dev
/bin/bash: bison: command not found
Yacc: aidl <= frameworks/base/tools/aidl/aidl_language_y.y
bison -d -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
/bin/bash: bison: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127
解决方法:sudo apt-get install bison
/bin/bash: flex: command not found
out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp: In function ‘int yyparse()’:
out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp:1827: warning: deprecated conversion from string constant to ‘char*’
out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp:1970: warning: deprecated conversion from string constant to ‘char*’
Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
/bin/bash: flex: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127
解决方法: sudo apt-get install flex
/usr/bin/ld: cannot find -lncurses
host Executable: adb (out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb)
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1
解决方法:sudo apt-get install libncurses5-dev
fatal error: GL/glx.h: No such file or directory
development/tools/emulator/opengl/host/libs/Translator/GLcommon/GLDispatch.cpp:22: 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
解决方法:sudo apt-get install libgl1-mesa-dev
sh: gperf: not found
target Generated: libwebcore <= external/webkit/Source/JavaScriptCore/create_regex_tables
Generating CSSPropertyNames.h <= CSSPropertyNames.in
sh: gperf: not found
calling gperf failed: 32512 at ./makeprop.pl line 140.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h] Error 25
make: *** Deleting file `out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h'
解决方法:sudo apt-get install gperf
参考:
http://blog.csdn.net/xwwxxw123321/article/details/12321695
http://blog.csdn.net/ithomer/article/details/6977386
http://blog.csdn.net/mr_raptor/article/details/7954474
- Ubuntu13.10编译Android4.3源码(一)
- Ubuntu13.10编译Android4.3源码(二)
- ubuntu13.04代理下载并编译android4.3源码
- 【环境搭建005】UBUNTU13.04 android4.08 源码编译实践中遇到的问题
- ubuntu13.04下载android4.0.1源码过程
- 配置Ubuntu13.10 64bit 编译Android源码
- 粗略记录ubuntu11.10编译android4.3源码
- ubuntu11.10 编译android4.1.1源码
- Ubuntu15.10 编译 Android4.1.1 源码
- ubuntu13.04下载 编译android 4.0 (一)
- android4.4内核编译(附源码)
- android4.0源码编译
- 编译android4.4源码
- Android Launcher研究一(编译Android4.0 launcher 源码 上)
- android4.4系统源码编译(一)_环境搭建
- android4.0编译错误集(一)
- Ubuntu13.10下编译opensift
- Android4.0源码编译问题
- 2015互联网校招总结—一路走来
- 使用pdf格式转换器转换方法
- IOS 关键字self,super,copy, retain, assign , readonly , readwrite, nonatomic、@synthesize、@property、@dyna
- 推荐几款pdf文件转换Excel表格在线转换
- I/O函数
- Ubuntu13.10编译Android4.3源码(一)
- 大数据时代下的个性化服务
- 修改Android系统的build.prop
- TestNg + ReprotNG Commandline
- 去除VMware 全屏时的屏幕上方的快捷键会话提示
- Cocos2Dx之处理键盘输入
- 判断当前浏览器类型
- 解决win7没有找到suite objects.dll 导致rational rose不能启动的问题
- 技术简历精益求精