Android 的架构中大部份IPC通讯都使用BinderSystem,如下则在NDK环境下实现的一个使用BinderIPC机制 简单的整数相加 示例代码。在这里使用到前两篇所写的 <使用NDK开发C/C++项目规则>与<使用NDK开发Core-Service项目规则>文章,如有不明之处,可参阅读前两篇文章。
1. 建立libAdd 子项目:
建立sources/Add/libAdd/AddService.h文件
建立sources/Add/libAdd/AddService.cpp文件
建立sources/Add/libAdd/Add.h文件
建立sources/Add/libAdd/Add.cpp文件
以上这些源码在<如何撰寫第一個核心服務>文章中有详细描述,与此文章描述不同之处在于以下Android.mk 文件
建立sources/Add/libAdd/Android.mk文件
~/android-ndk-1.5_r1/sources/Add/libAdd$ gvim Android.mk
### sources/Add/libAdd/Android.mk ###
LOCAL_PATH:= $(call my-dir)
# 注意:此处引用了自己定义make file 规则文件
include$(LOCAL_PATH)/../config.mk
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
AddService.cpp \
Add.cpp
LOCAL_CFLAGS := \
-I$(ANDROID_FRAMEWORKS_BASE_INCLUDE)\
-I$(ANDROID_SYSTEM_CORE_INCLUDE)\
-I$(LOCAL_PROJECT_PATH)
LOCAL_SHARED_LIBRARIES :=
LOCAL_LDLIBS := \
-L$(ANDROID_LIB) \
-lutils \
-llog
LOCAL_MODULE := libAdd
include $( BUILD_SHARED_LIBRARY)
2. 建立addserver 子项目:
建立sources/Add/addserver/addserver.cpp文件
此源码在<如何撰寫第一個核心服務>文章中有详细描述,其Android.mk如下:
建立sources/Add/addserver/Android.mk文件
~/android-ndk-1.5_r1/sources/Add/addserver$ gvim Android.mk
### sources/Add/addserver/Android.mk ###
LOCAL_PATH:= $(call my-dir)
# 注意:此处引用了自己定义make file 规则文件
include$(LOCAL_PATH)/../config.mk
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
addserver.cpp
LOCAL_CFLAGS := \
-I$(ANDROID_FRAMEWORKS_BASE_INCLUDE)\
-I$(ANDROID_SYSTEM_CORE_INCLUDE)\
-I$(LOCAL_PROJECT_PATH)
LOCAL_SHARED_LIBRARIES := \
libAdd
LOCAL_LDLIBS := \
-L$(ANDROID_LIB) \
-lutils \
-lcutils \
-llog
LOCAL_MODULE := addserver.bin
include $(BUILD_EXECUTABLE)
3. 建立用户自定义项目配置makefile文件:
~/android-ndk-1.5_r1/sources/add $ gvim config.mk
### sources/Add/config.mk ###
include usr/config/main_config.mk
LOCAL_PROJECT_PATH := $(NDK_ROOT_SRC)/Add
至此 在NDK上的Core-Service 的基本示例就此结束。
使用简单编译命令就可生成相应的文件。
ByGuilh