现在的位置: 首页 > 综合 > 正文

Android编译Native C 模块

2013年08月05日 ⁄ 综合 ⁄ 共 1780字 ⁄ 字号 评论关闭

Android.mk 代替 Makefile:

Android
编译环境
本身比较复杂,且不像普通的编译环境:只有顶层目录下才有
Makefile
文件,而其他的每个
component
都使用统一标准的
Android.mk
.
Android.mk
文件本身是比较简单的,不过它并不是我们熟悉的
Makefile
,而是经过了
Android
自身编译系统的很多处理,因此要真正理清楚其中的联系还比较复杂,不过这种方式的好处在于,编写一个新的
Android.mk
来给
Android
增加一个新的
Component
会比较简单。


编译步骤:


编译
Java
程序可以直接采用
Eclipse
的集成环境来完成,这里就不重复了。我们主要针对
C/C++
来说明,下面通过一个小例子来说明,如何在
Android
中增加一个
C
程序的
Hello World

1.

$(YOUR_ANDROID)/
development
目录下创建
hello
目录,其中
$(YOUR_ANDROID)

Android
源代码所在的目录。

- # mkdir $(YOUR_ANDROID)/development/hello


2.

$(YOUR_ANDROID)/development
/hello/

目录编写
hello.c
文件,
hello.c
的内容当然就是经典的
HelloWorld
程序:


 

3.

$(YOUR_ANDROID)/development
/hello/

目录编写
Android.mk
文件。这是
Android Makefile
的标准命名,不要更改。
Android.mk
文件的格式和内容可以参考其他已有的
Android.mk
文件的写法,针对
helloworld
程序的
Android.mk
文件内容如下:


注意上面
LOCAL_SRC_FILES
用来指定源文件;

LOCAL_MODULE
指定要编译的模块的名字,下一步骤编译时就要用到;

include $(BUILD_EXECUTABLE)
表示要编译成一个可执行文件,如果想编译成动态库则可用
BUILD_SHARED_LIBRARY
,这些可以在
$(YOUR_ANDROID)/build/core/config.mk


查到。


4.
回到
Android
源代码顶层目录进行编译:


注意
make helloworld
中的目标名
helloworld
就是上面
Android.mk
文件中由
LOCAL_MODULE
指定的模块名。编译结果如下:


 

5
.如上面的编译结果所示,编译后的可执行文件存放在
out/target/product/generic/system/bin/helloworld
,通过
”adb push”
将它传送到模拟器上,再通过
”adb shell”
登录到模拟器终端,就可以执行了。

 

 

原文连接:

http://www.top-e.org/jiaoshi/html/?157.html

抱歉!评论已关闭.