蓝晶烂尾的书:使用NDK开发C/C 项目规则--Android NDK--Google Android 論壇

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 08:29:15
使用NDK开发C/C++项目规则@font-face {font-family: "宋体";}@font-face {font-family: "@宋体";}p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0cm 0cm 0.0001pt; text-align: justify; font-size: 10.5pt; font-family: "Times New Roman"; }h3 { margin: 13pt 0cm; text-align: justify; line-height: 173%; page-break-after: avoid; font-size: 16pt; font-family: "Times New Roman"; }div.Section1 { page: Section1; }ol { margin-bottom: 0cm; }ul { margin-bottom: 0cm; } 为使更多朋友能更容易学会使用NDK开发C/C++ 程序,特写此贴,希望能帮的上大家。

    使用NDK开发C/C++项目需注意以下几点规则:

NDK工具原目录规则;
    在NDK上自建目录及文件规则;

NDK工具的Make File规则;
   
NDK工具的编译规则;

1.   NDK工具的目录规则
apps           # java项目目录、编译启动文件存放各项目目录中、
# 最终编译结果将从out目录中拷贝一份到apps目录下的libs 目录中
build          #编译环境目录
docs           #文档目录
GNUmakefile    # makefile 启始文件
out            # 编译生成后存放目录
README.TXT     # readme 说明
sources        # C++项目目录

2.   自建目录及文件规则
apps/<项目名>                    # Java 项目
sources/<项目名>                 # C++ 项目
apps/<项目名>/Application.mk     # 启动编译项目列表 (必须有此文件)
apps/<项目名>/default.properties # android 编译版本 (必须有此文件)

sources/<项目名>/Android.mk      # 此文件会寻找当前目录下所有子目录中的Android.mk文件

sources/<项目名>/<子项目>/Android.mk       # 编译子项目的makefile(必须有此文件)

 

3.   NDK 工具的Make File规则

创建文件 apps/<项目名>/default.properties

~/android-ndk-1.5_r1/apps/<项目名> $ gvim default.properties

### apps/<项目名>/default.properties ###

# 这里指定使用 android-3是指 android sdk 1.5 版本

target=android-3

 

创建文件apps/<项目名>/Application.mk

~/android-ndk-1.5_r1/apps/<项目名>  $ gvim Application.mk

### apps/<项目名>/Application.mk ###

APP_PROJECT_PATH := $(call my-dir)

#########################################################
# 子项目输出名列表

#########################################################
# 是每一个 sources/<项目名>/的所有子项目中Android.mk指定的输出名

APP_MODULES := <子项目输出名列表>

 

建立sources/<项目名>/Android.mk文件

~/android-ndk-1.5_r1/sources/<项目名> $ gvim Android.mk

### sources/project_test/Android.mk ###

# 寻找当前目录下的所有子目录中的Android.mk

include $(call all-subdir-makefiles)

    

建立sources/<项目名>/<子项目>/Android.mk文件

~/android-ndk-1.5_r1/sources/<项目名>/<子项目> $ gvim Android.mk

### sources/<项目名>/<子项目>/Android.mk ###

 

#########################################################
# 进入当前目录并取得当前目录的路径

#########################################################
# 其结果为: ~/android-ndk-1.5_r1/sources/<项目名>/<子项目>

LOCAL_PATH:= $(call my-dir)

 

#########################################################

# 清除NDK全局变量

#########################################################
include $(CLEAR_VARS)

 

#########################################################
# 项目需要编译源文件列表

#########################################################
LOCAL_SRC_FILES:=

 

#########################################################
# 项目需要的.h头文件目录列表

#########################################################
LOCAL_CFLAGS :=

 

#########################################################

# 项目需要的链接自编译出的.so 文件列表

#########################################################

LOCAL_SHARED_LIBRARIES :=

 

#########################################################
# 项目需要的链接非自编译出的.so文件目录及列表

#########################################################
LOCAL_LDLIBS :=

 

#########################################################
# 在执行此Android.mk 文件时,显示指定的变量信息

#########################################################
# 如无需显示则可在之前加“#”符号

# 此次则显示 LOCAL_SRC_FILE变量内容在控制台上

$(info $(LOCAL_SRC_FILES))

 

#########################################################
# 子项目编译出输文件名

#########################################################
LOCAL_MODULE := <子项目输出名>

 

#########################################################
# 项目编译出输引用文件名,编译成哪种文件,

#########################################################
# BUILD_EXECUTABLE 是指.bin二进制执行文件

# BUILD_SHARED_LIBRARY 是指.so 动态库文件

# BUILD_STATIC_LIBRARY 是指.a 静态库文件

# 例如 输出二进制执行文件

# include $(BUILD_EXECUTABLE)

include $(<项目编译出输文引用件名>)

 

######################################################################
# 注:上以所有*.mk文件中的 “XXX := ”这样的变量赋值操作格式如下:   #

# 每一个*.c/*.cpp 都使用空格分开,如果换行,则用 “\”               #

# 例如同行 : LOCAL_SRC_FILES := a.c b.cpp                            #

# 例如换行 : LOCAL_SRC_FILES := a.c \                                #

#                                b.cpp                               #

######################################################################

 
4.   NDK 工具的编译规则
# 技巧:强制重新编译,则在最后加“ -B”,注意减号前有空格
@font-face {font-family: "宋体";}@font-face {font-family: "@宋体";}p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0cm 0cm 0.0001pt; text-align: justify; font-size: 10.5pt; font-family: "Times New Roman"; }div.Section1 { page: Section1; }~/android-ndk-1.5_r1 $ make APP=<项目名>


By Guilh