1)Java代码
Checking build tools versions...
build/core/main.mk:72:
************************************************************
build/core/main.mk:73: You are attempting to build on a 32-bit system.
build/core/main.mk:74: Only 64-bit build environments are supported
beyond froyo/2.2.
build/core/main.mk:75:
************************************************************
build/core/main.mk:76: *** stop. Stop.
解决办法:
#ifneq (64,$(findstring 64,$(build_arch)))
ifneq (i686,$(findstring i686,$(build_arch)))
$(warning ************************************************************)
$(warning You are attempting to build on a 32-bit system.)
$(warning Only 64-bit build environments are supported beyond
froyo/2.2.)
$(warning ************************************************************)
$(error stop)
endif
修改以下文件:
external/clearsilver/cgi/Android.mk,
external/clearsilver/java-jni/Android.mk,
external/clearsilver/util/Android.mk,
external/clearsilver/cs/Android.mk
改为
disable LOCAL_CFLAGS += -m64
disable LOCAL_LDFLAGS += -m64
2)Java代码
Install: out/host/linux-x86/framework/droiddoc.jar
target Generated: libclearsilver-jni <=
out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar
host C: libclearsilver-jni <=
external/clearsilver/java-jni/j_neo_util.c
In file included from /usr/include/features.h:378,
from /usr/include/string.h:26,
from external/clearsilver/java-jni/j_neo_util.c:1:
/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 没有那个文件
或目录
make: ***
[out/host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/j_neo_util.o]
错误 1
解决办法:
sudo apt-get install lib64z1-dev libc6-dev-amd64 g++-multilib
lib64stdc++6
3)Java代码
打开此文件: 源码目录/build/core/main.mk 找到
# Check for the correct version of java
java_version := $(shell java -version 2>&1 | head -n 1 | grep '[
"]1/.6[/. "$$]')
ifeq ($(strip $(java_version)),)
$(info
************************************************************)
$(info You are attempting to build with the incorrect version)
$(info of java.)
$(info $(space))
$(info Your version is: $(shell java -version 2>&1 | head -n 1).)
$(info The correct version is: 1.6.)
$(info $(space))
$(info Please follow the machine setup instructions at)
$(info
$(space)$(space)$(space)$(space)http://source.android.com/download)
$(info
************************************************************)
$(error stop)
endif
解决办法:
把里面的数字"6"改成"5",用JDK 1.5编译
##########################################################################
Ubuntu 10.04下编译Android 2.2源码先安装必须的软件和库程序:
$ sudo -s
$ apt-get update
$ apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev build-essential zip curl libncurses5-dev zlib1g-dev
|
然 后将cn99软件源添加到更新源,继续:
$ apt-get install sun-java6-jdk libwxgtk2.6-dev
下载源码:
$ mkdir mydroid
$ cd mydroid
$ repo init -u git://Android .git.kernel.org/platform/manifest.git
$ repo sync
编译源码:
$ make
...等待一个半小时...
配置环境变量,运行模拟器:
......
由于Android 2.2编译时需要使用jdk6,而子项目的makefile规则里判断若使用jdk6,则系统是 64位系统,使用64位编译模块。要想在32系统上正确编译,需要修改下面4个文件:
external/clearsilver/cgi/Android .mk
external/clearsilver/java-jni/Android .mk
external/clearsilver/util/Android .mk
external/clearsilver/cs/Android .mk
将文件中的判断语句中ifneq改为ifeq可通过编译
# This forces a 64-bit build for Java6
ifneq ($(filter 1.6%,$(java_version)),)
LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += -m64
endif