안녕하세요.
android system service 두종류는 중 하나인 native system service를 작성하여
kitkat(4.4) 올려서 테스트할려고 했습니다.
- frameworks\base\cmds\helloworld
native service 테스트를 위해 서버/클라이언트를 작성한 곳입니다.
-frameworks\base\include\helloworld
인터페이스/스텁/프록시/서비스 헤더 파일이 있는 곳입니다.
-frameworks\base\libs\helloworld
인터페이스/스텁/프록시/서비스 구현한 파일들이 있습니다.
이 서비스의 내용은 클라이언트 실행시 간단한 텍스트를 출력하는겁니다.
즉, 클라이언트에서 native service를 이용한 RPC를 수행합니다.
ex)sHelloworldService->print("oh~~~!!! Good!!!");
*실행방법:
adb shell
cd system/bin
./helloworldservice & //서버 실행
./helloworldclient & //클라이언트 실행
결국 하기와 같이 실행파일로 생성된 서버/클라이언트 실행시 "oh~~~!!! Good!!!" 출력이 되는것을 예상하고 만든 예제입니다.
하지만 컴파일은 되는데 실제 lib/exe 파일이 생성이 되질 않았습니다.
하기 내용들이 제가 수정한 make 파일 내용입니다.
*make 파일들
-frameworks\base\libs\helloworld\Android.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
IHelloworldService.cpp \
BpHelloworldService.cpp \
BnHelloworldService.cpp \
HelloworldService.cpp
LOCAL_SHARED_LIBRARIES := \
libcutils \
libutils \
libbinder
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE:= libhelloworld
include $(BUILD_SHARED_LIBRARY)
-frameworks\base\cmds\helloworld\Android.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
main_helloworldservice.cpp
LOCAL_SHARED_LIBRARIES := \
libutils \
libbinder \
libhelloworld
#LOCAL_C_INCLUDES := \
#$(LOCAL_PATH)/../libs/helloworld
base := $(LOCAL_PATH)/../..
LOCAL_MODULE:= helloworldservice
include $(BUILD_EXECUTABLE)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
main_helloworldclient.cpp
LOCAL_SHARED_LIBRARIES := \
libutils \
libbinder \
libhelloworld
#LOCAL_C_INCLUDES := \
#$(LOCAL_PATH)/../libs/helloworld
base := $(LOCAL_PATH)/../..
LOCAL_MODULE:= helloworldclient
include $(BUILD_EXECUTABLE)
그래서 여러번 make 파일을 수정해서 해보다가 이것도 되질 않아서 build/core/pathmap.mk 에 framework 빌드패스를 추가해 빌드는 되었지만 여전히 lib/exe 파일이 생성이 되질 않았습니다.
#
# A list of all source roots under frameworks/base, which will be
# built into the android.jar.
#
FRAMEWORKS_BASE_SUBDIRS := \
$(addsuffix /java, \
core \
graphics \
location \
media \
media/mca/effect \
media/mca/filterfw \
media/mca/filterpacks \
drm \
opengl \
sax \
telephony \
wifi \
keystore \
//하기부분을 추가해서 framework에서 빌드시 함께 되는지 확인해봤지만,빌드는 되었지만 lib/exe파일 생성이 되질 않더군요.
libs/helloworld \
include/helloworld \
cmds/helloworld \
)
예제소스는 첨부에 올려놨습니다.
고수분들의 조언 부탁합니다.
감사합니다.
아직 안 돌려 봤는데...........돌려 봐야지 하면서 못돌려 보고 있습니다...ㅠ.ㅠ
다음주 정도에 돌려보고 말씀 드릴 수 있겠네요...ㅎ