ubuntu12.04(64位)下编译android4.1.1源码过程
2016-07-25 16:09
597 查看
http://blog.csdn.net/xdhywj/article/details/9287827
一、安装sun-java6-jdk
安装sun-java6-jdk首先需要在源里添加sun-java6-jdk的源
安装jdk6
[html]
view plain
copy
$sudo apt-get install python-software-properties
$sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse"
$ sudo apt-get update
$ 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 命令
一、安装sun-java6-jdk
安装sun-java6-jdk首先需要在源里添加sun-java6-jdk的源
安装jdk6
[html]
view plain
copy
$sudo apt-get install python-software-properties
$sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse"
$ sudo apt-get update
$ 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 命令
相关文章推荐
- 单例模式(懒汉式)的更好的写法
- Android jni反射生成TextView控件
- 修改Gradle缓存文件夹路径的5种方法
- Unexpected namespace prefix "xmlns" found for tag RelativeLayout
- Android高效加载大图、多图解决方案,有效避免程序OOM
- Android虚拟机GenyMotion-- 遇到的问题
- Android -- 双击退出
- 你真的会用Gson吗?Gson使用指南(二)
- Android 常用测试框架总结对比
- Android自绘动画实现与优化实战
- multidex分包续:将指定的类打包到主dex中
- Android Studio 中ADB WIFI 插件
- Android 5.0 部分新特性学习
- [Android]自定义图片左上角斜着的View
- Android Studio文件名颜色代表的意思
- android ListView 嵌套scrollView 自适应高度
- 【Android】 基础知识(一) --Android Studio使用技巧(3)
- Ignoring InnerClasses attribute for an anonymous inner class
- Android一些开源框架
- 【Android】 基础知识(一) --Android Studio使用技巧(2)