Android应用开发环境搭建
1. 概述
Linux下C/C++应用程序的开发,通常是使用make编译工具,通过一个规则文件Makefile来生成应用的可执行二进制文件。
(编译Java程序可以直接采用Eclipse的集成环境来完成)
Android是基于Linux平台,所以在Android的应用开发也同样遵循以上方式。但Android的编译环境对Makefile编译方式做了修改,使用了统一标准的Android.mk,只有在顶层目录才有一个Makefile文件,和普通我们熟悉的Makefile文件相差较多。
虽然Android.mk方式封装了很多Android编译系统的内部处理,增加了复杂性,但是对用户来添加一个应用开发,比起普通Makefile开发却是方便了许多。
基于以上的分析,本文将分别描述2种Android应用的开发:
l 在Android目录内,采用Android.mk方式开发应用
l 在Android目录外,采用Makefile方式开发应用
2. Android.mk方式
2.1. 创建hello应用目录
敲入以下命令,在Android目录下创建一个hello目录
# mkdir $(YOUR_ANDROID)/development/hello
$(YOUR_ANDROID)指Android源代码所在的目录
2.2. 创建hello.c文件
在hello目录下创建一个hello.c文件,内容如下:
#include
int main()
{
printf("Hello World!/n");
return 0;
}
2.3. 创建Android.mk文件
在hello目录下创建一个Android.mk文件,内容如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= /
hello.c
LOCAL_MODULE := helloworld
include $(BUILD_EXECUTABLE)
2.4. 开始编译
在Android顶层目录下,敲入以下命令开始编译:
# cd $(YOUR_ANDROID)
# make helloworld
如果此时Android平台还没有make过的话,上述命令会先编译完Android平台,再编译helloworld应用,耗时较长,如果已经编译过则时间就会短很多。
如果在已编译完Android平台情况下,编译成功的信息如下:
2.5. 缺点
2.5.1. 编译时间较长
此外采用Android.mk方式编译应用时,在第一行信息处往往会耗费较长时间,如果使用Makefile方式则无此问题。
2.5.2. 不便于并行开发
由于此种应用开发需要局限在Android目录下,对于每个应用开发人员都要集中在一个Android目录下开发。
同时这种方式也不便于向外提供二次开发环境。
3. Makefile方式
3.1. 创建hello应用目录
敲入以下命令,在Android目录外创建一个hello目录
# mkdir $(YOUR_DIR)/hello
$(YOUR_DIR)可以是任意一个目录,此处为了方便举例,将Android和hello放在同一个目录下:
3.2. 创建hello.c文件
在hello目录下创建一个hello.c文件,内容如下:
#include
int main()
{
printf("Hello World!/n");
return 0;
}
3.3. 创建Makefile文件
在hello目录下创建一个Makefile文件,内容如下:
这份Makefile文件下载到你的机器上时,只需要修改ANDROID_PATH路径即可。
因为我们先前是将Android和hello放在$(YOUR_DIR)同一个目录下,所以这里的ANDROID_PATH的路径是../mydroid
3.4. 开始编译
在hello目录下,敲入以下命令开始编译:
这样不到1秒时间内,就生成了二进制可执行文件hello
4. 遗留问题
l 最后生成的Hello文件,由于目前出差,暂时还没有在开发板上运行验证,是否可以打印出helloworld信息。
l 另外本文的Makefile中所罗列的库文件,在今后应用开发未必都能满足,因为本例中的hello示例只使用了stdio.h头文件,例如要开发minigui应用,还需要在Makefile中添加minigui的相关库。