ubuntu12.04(64位)下编译android4.1.1源码过程

http://blog.csdn.net/xdhywj/article/details/9287827

一、安装sun-java6-jdk

安装sun-java6-jdk首先需要在源里添加sun-java6-jdk的源

安装jdk6

  1. $sudo apt-get install  python-software-properties   
  2. $sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse"  
  3. $ sudo apt-get update  
  4. $ sudo apt-get install sun-java6-jdk   

之后需要设置默认的java程序
sudo update-alternatives --config java
按照提示输入对应的选项,指定为JDK 6

下面设置
sudo vim /etc/environment

在其中添加如下两行:
CLASSPATH=/usr/lib/jvm/java-6-sun/lib
JAVA_HOME=/usr/lib/jvm/java-6-sun
如果其中已经设置了CLASSPATH和JAVA_HOME,则将其修改为上面的形式,按ZZ保存退出。

二、通过make开始编译,遇到的错误:

1、host/i686-linux-glibc2.7-4.6/bin/i686-linux-gcc: 没有那个文件或目录
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 错误 127

解决:sudo apt-get install g++-multilib

2、prebuilts/tools/gcc-sdk/gcc: line 40: prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/i686-linux-gcc: No such file or directory
解决:sudo apt-get install ia32-libs

3、[out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] 错误 127
解决:sudo apt-get install bison

4、Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l /bin/bash: flex: 未找到命令

解决:sudo apt-get install flex

5、OSError: [Errno 2] No such file or directory
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libbcc_intermediates/libbcc-stamp.c] 错误 1
make: *** 正在删除文件“out/host/linux-x86/obj/SHARED_LIBRARIES/libbcc_intermediates/libbcc-stamp.c”
make: *** 正在等待未完成的任务....
解决:sudo apt-get install git,  sudo apt-get install git-core

6、Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
 at java.util.zip.ZipOutputStream.getUTF8Bytes(ZipOutputStream.java:498)
 at java.util.zip.ZipOutputStream.writeLOC(ZipOutputStream.java:348)
 at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:179)
 at java.util.jar.JarOutputStream.putNextEntry(JarOutputStream.java:92)
 at com.android.tools.layoutlib.create.AsmGenerator.createJar(AsmGenerator.java:241)
 at com.android.tools.layoutlib.create.AsmGenerator.generate(AsmGenerator.java:225)
 at com.android.tools.layoutlib.create.Main.main(Main.java:98)
make: *** [out/host/common/obj/JAVA_LIBRARIES/temp_layoutlib_intermediates/javalib.jar] 错误 1
make: *** 正在删除文件“out/host/common/obj/JAVA_LIBRARIES/temp_layoutlib_intermediates/javalib.jar”
解决:这个问题也是java虚拟机内存的问题,解决的方法是修改frameworks/base/tools/layoutlib/Android.mk
将文件中的
$(hide) java -jar $(built_layoutlib_create_jar) \ 这行修改为如下:
$(hide) java  -Xmx512M  -jar $(built_layoutlib_create_jar) \

7、make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h] 错误 25
make: *** 正在删除文件“out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h”

解决:sudo apt-get install gperf

8、Install: out/target/product/generic/system/xbin/timeinfo
Copy xml: out/target/product/generic/system/etc/apns-conf.xml
/bin/bash: xmllint: 未找到命令
make: *** [out/target/product/generic/system/etc/apns-conf.xml] 错误 127

解决:sudo apt-get install libxml2-utils

 9、Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
 at java.util.Vector.<init>(Vector.java:111)
 at java.util.Vector.<init>(Vector.java:124)
 at org.antlr.analysis.DFA.createTransitionTableEntryForState(DFA.java:551)
 at org.antlr.analysis.DFA.createStateTables(DFA.java:440)
 at org.antlr.codegen.CodeGenerator.genLookaheadDecision(CodeGenerator.java:645)
 at org.antlr.grammar.v3.CodeGenTreeWalker.block(CodeGenTreeWalker.java:2876)
 at org.antlr.grammar.v3.CodeGenTreeWalker.rule(CodeGenTreeWalker.java:2382)
 at org.antlr.grammar.v3.CodeGenTreeWalker.rules(CodeGenTreeWalker.java:1537)
 at org.antlr.grammar.v3.CodeGenTreeWalker.grammarSpec(CodeGenTreeWalker.java:1441)
 at org.antlr.grammar.v3.CodeGenTreeWalker.grammar_(CodeGenTreeWalker.java:461)
 at org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:421)
 at org.antlr.Tool.generateRecognizer(Tool.java:655)
 at org.antlr.Tool.process(Tool.java:468)
 at org.antlr.Tool.main(Tool.java:93)
make: *** [out/host/common/obj/JAVA_LIBRARIES/smali_intermediates/smaliLexer.java] 错误 1
解决:

这个问题同样是提示java虚拟机内存的问题,解决的思路是一样的,但解决这个问题需要修改的是external/smali/smali/Android.mk

这个mk文件,将Android.mk文件中的

$(GEN): PRIVATE_CUSTOM_TOOL = java -jar $(ANTLR_JAR) -fo $(dir $@) $<.这行,修改为

$(GEN): PRIVATE_CUSTOM_TOOL = java -Xmx512m  -jar $(ANTLR_JAR) -fo $(dir $@) $<.

9、编译成功后,出现以下信息:
target Unstripped: vgpreload_tsan-arm-linux (out/target/product/generic/obj/lib/vgpreload_tsan-arm-linux.so)
Generated: (out/target/product/generic/android-info.txt)
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
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img
Running:  mkyaffs2image -f out/target/product/generic/data out/target/product/generic/userdata.img

10、运行模拟器可能会出现的问题:

No command 'emulator' found, did you mean:

编译成功之后,在终端运行emulator命令,却提示:
No command 'emulator' found, did you mean:

Command 'qemulator' from package 'qemulator' (universe)

emulator: command not found

解决方法:

重新运行以下命令:

source build/envsetup.sh

lunch full-eng

之后再次运行 emulator 命令

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值