多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
要编译Android源代码,只需在Android源代码目录下执行make命令就可以了: ~~~ USER@MACHINE:~/Android$ make ~~~ 第一次编译Android源代码时,花费的时间会比较长,同时也可能会遇到各种各样的问题,这时候一般都可以通过搜索引擎来找到解决方案。例如,如果我们是在32位机器上编译主线上的Android源代码,则会碰到下面这个错误提示: ~~~ build/core/main.mk:76: ************************************************************ build/core/main.mk:77: You are attempting to build on a 32-bit system. build/core/main.mk:78: Only 64-bit build environments are supported beyond froy build/core/main.mk:79: ************************************************************ ~~~ 这时候可以使用关键词“You are attempting to build on a 32-bit system”在搜索引擎上找到解决方案。原来,主线上的Android源代码默认只能在64位的机器上编译,如果在32位的机器上编译,就会出现上述错误提示。如果我们仍然想在32位的机器上编译Android源代码,就可以按照下面方法来修改编译脚本: (1) 打开build/core/main.mk文件,并且找到下面内容: ~~~ ifeq ($(BUILD_OS),linux) build_arch := $(shell uname -m) ifneq (64,$(findstring 64,$(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.) ~~~ 将第3行修改为: ~~~ ifneq (i686,$(findstring i686,$(build_arch))) ~~~ (2)打开external/clearsilver/cgi/Android.mk、external/clearsilver/cs/Android.mk、external/clearsilver/java-jni/Android.mk和external/clearsilver/util/Android.mk这四个文件,并且找到下面内容: ~~~ # This forces a 64-bit build for Java6 LOCAL_CFLAGS += -m64 LOCAL_LDFLAGS += -m64 ~~~ 将后面两行修改为: ~~~ LOCAL_CFLAGS += -m32 LOCAL_LDFLAGS += -m32 ~~~ 经过这样的修改之后,在32位的机器上编译Android源代码产生的问题就可以解决了。 编译成功后,可以看到下面的输出: ~~~ Target system fs image: 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 Installed file list: out/target/product/generic/installed-files.txt ~~~ 编译结果输出目录为out/target/product/$(TARGET_PRODUCT),其中,TARGET_PRODUCT是一个环境变量,它的默认值为generic。 Android源代码编译成功之后,可以执行以下命令将它打包成SDK: ~~~ USER@MACHINE:~/Android$ make sdk ~~~ 打包成功后,可以看到下面的输出: ~~~ Package SDK: out/host/linux-x86/sdk/android-sdk_eng.$USER$_linux-x86.zip ~~~ 其中,$USER$表示当前登录到系统中的用户名。有了这个SDK包之后,我们就可以在IDE环境中开发Android应用程序了。