• 로그인 함 해보끄나?

  • Sarangnamu.net June 17, 2003
    Home Login Profile Study Open Project Q&A Google Code
    stlport on android
    Last Modify : 31 July, 2013(08:03)
    # ndk 가 버전이 높아 지면서 간단하게 바뀌었다. Application.mk 에 다음을 추가하면 사용된다
    APP_STL := stlport_static
    여기저기 stlport 가 이전에 wrapper 기준으로 되어 있어서... 그건 사용하긴 싫고 해서 일단은 android 2.2 부터 포함되어 있는 stlport를 이용하기로 생각하고 이 내용을 작성한다. 해당 내용은 ndk r4b 기준으로 작성되었다. #1 먼저 ndk를 다운 받는데 그 경로는 다음과 같다.
    http://developer.android.com/sdk/ndk/index.html
    #2 기본적인 jni의 구성은 샘플인 hello-jni 를 사용하였다.. (이게 나중에 큰 화를 부르긴했다..) eclipse 에서 Load 하는 방법은 new project 를 한 뒤 exist project를 선택해서 위치를 지정하면 불러 올 수 있다. #3 먼저 stlport 를 다운 받아야 되는데 android kernel 내에 stlport 가 포함되어 있다보니 다음의 경로로 일단 이동한다.
    http://android.git.kernel.org/
    이곳에 platform/external/stlport.gif 가 존재하고 이를 선택하게 되면 stlport를 git 로 다운로드 할 수 있는데 그 경로는 다음과 같다.
    git://android.git.kernel.org/platform/external/stlport.git
    이 파일은 임의의 위치에 다운 받아도 되지만 가능하면 $(ndk_root)/sources 내에 다운 받는게 좋다. 다운을 완료하였으면 git로 다운로드 한 뒤 stlport 내에 소스 파일을 약간 수정해주면 된다. 변경할 파일의 위치는 $(stlport_root)/stlport/stl/config 내에 _android.h 로 다음과 같이 변경하면 된다. original
    // Define how to include our native headers.
    #define _STLP_NATIVE_HEADER(header) <libstdc++/include/header>
    #define _STLP_NATIVE_C_HEADER(header) <../include/header>
    #define _STLP_NATIVE_CPP_C_HEADER(header) <libstdc++/include/header>
    #define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <libstdc++/include/header>
    #define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <libstdc++/include/header>
    #define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <libstdc++/include/header>
    
    changed
    // Define how to include our native headers.
    #define _STLP_NATIVE_HEADER(header) <header>
    #define _STLP_NATIVE_C_HEADER(header) <../include/header>
    #define _STLP_NATIVE_CPP_C_HEADER(header) <header>
    #define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <header>
    #define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <header>
    #define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <header>
    
    이후 빌드를 하면 되는데... abs 가 conflict 가 나는 문제가 발생하였다.... 해결 방법은.. 2틀동안 삽질한거에 비교해서 매우 간단하였으니... .c -> .cpp 로 파일 확장자를 변경해주면 된다.. 욕나온다.. ㅠ.ㅠ jni -> Android.mk
    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE    := hello-jni
    LOCAL_SRC_FILES := hello-jni.cpp
    LOCAL_C_INCLUDES := $(NDK_ROOT)/sources/stlport/stlport
    LOCAL_SHARED_LIBRARIES += libstlport
    
    include $(BUILD_SHARED_LIBRARY)
    
    # CHILD PROJECT
    include $(NDK_ROOT)/sources/stlport/Android.mk
    
    ps. NDK_ROOT 는 .bashrc 에서 미리 설정해두었다.

    Comment


    입력하3 1498665136



    Locations of visitors to this page