How to build the BONDI RI(Reference Implementation).

지난 bondi RI 에서는 bondi에서 배포하는 버전을 설치하고 실행하는 부분에 대해서 다루었습니다.

이번에는 bondi RI의 소스를 build 해서 실행하는 방법에 대해서 알아보겠습니다.

1. windows mobile 개발 환경 구성

bondi RI는 windows mobile 환경에서 설치 및 실행되므로 아래 개발 환경이 우선 설치 되어야 합니다.

– visual studio 2005 Professional or Team system editions

– windows mobile 6 professional SDK

visual studio 2005에서는 professtional 이상의 버전을 사용해서 windows mobile 개발이 가능합니다. 이 버전 이상이 설치 되어있다면 windows mobile 6 professional SDK를 mircosoft site에서 다운로드 받아 설치합니다. (다운로드 바로 가기)

2. bondi RI source

개발 환경이 구축되면 이제 bondi RI 소스와 bondi RI의 구동에 필요한 webvm SDK를 설치합니다.

omtp에서는bondi RI의 소스를 svn으로 관리를 하므로 svn에 필요한 client 프로그램을 설치하면 아래 주소에서 받을 수 있습니다. 필자는 윈도우용 svn client인 tortoisesvn 를 이용했습니다.

http://svn.omtp.org:8080/svn/bondi/trunk

현재 svn에는 인증을 필요로 합니다.  bondi development site에 회원가입을 하고 가입 확인 메일을 받으면 가입한 ID/PW로 인증이 가능합니다.

3. webvm SDK

webvm은 browser에서 PIM, Geolocation 등의 native feature를 사용하기 일종의 plug-in 입니다. bondi APIs에서는 다양한 종류의 native featrue를 사용하므로 browser에서 이 부분을 연결하기 위해서 bondi RI(windows mobile)에서는 webvm을 이용합니다.  그러므로 bondi RI를 build 하기 위해서는 webvm SDK가 필요합니다.

webvm에 대한 상세 내용은 http://webvm.net/ 를 참고하십시오.

그럼 이제 build 필요한 마지막 부분인 webvm SDK를 설치해야 합니다.  http://sdk.webvm.net/에서 이름, 메일 정보등을 입력하고면 메일로 다운로드 가능한 주소를 보내줍니다. ( 테스트용으로 받기위해서 요청을 했을 때 답변 메일에 3시간 정도가 소요되었습니다.)

다운로드 SDK의 압축을 풉니다. 그리고 아래의 경로를 windows 경로에 추가합니다.

WEBVMHOME=C:\path\to\your\webvm-sdk

이 경로의 include/webvm.h 파일을 이용하기 위한 내용이므로 꼭 추가해 주어야 합니다.

4. build

모든 환경이 준비 되었으면 visual studio 로  {bondi RI source path}\ri\build\wince\build.sln 프로젝트를 load하고 target을 Windows Mobile 6 Professional SDK (ARMV4I) 로 설정한 다음 build를 실행합니다.

bondi RI는 지속적인 수정이 되고 있는 상태이기 때문에 build 에 대해서 관리가 되지 않아서 무수한 에러와 만나게 될지도 모릅니다. 그럼에도 build 해서 실제 실행되는 부분을 확인하기 위해서는 에러를 직접 해결해야 합니다. : p

2010.04.01 기준의 소스를 받았을 때 발생한 에러에 대해서는 아래 내용을 적용하면 정상적으로 build가 되니 참고하십시오.

– fixed build error

  • C:\Program Files\Microsoft Visual Studio 8\VC\ce\include\comdef.h (240 line) 을 수정.  int nLen = ::lstrlen(m_pszMsg);   부분을 다음으로 변경   int nLen = lstrlen(m_pszMsg);
  • C:\path\to\your\webvm-sdk\include\webvm.h 파일을 {bondi RI source path}\ri\module\common\webvm.h 파일로 교체
  • MessagingCommon project 를 삭제하고 {bondi RI source path}\ri\module\common\messagingCommon2\wince\messagingCommon.vcproj 를 새로운 project로 Add. 추가로 WCommsLog project properties -> input lib에서 messsagingCommon을 messagingCommon2로 변경.
  • bondi_FeatureCallback_decl.h 를 include 한 부분 주석 처리

2010.04.01 소스는 위에 부분의 수정으로 build가 가능합니다.

5. Run bondi RI

이상 없이 build 가 완료되면 {bondi RI source path}\ri\build\wince\bin\ 아래에 BondiSetup1-016d.cap 파일이 생성됩니다. 이 설치 파일을 windows mobile emulator에서 설치하면 정상적으로 bondi RI가 실행되는 것을 확인할 수 있습니다.

참고로 아래 부분을 수정하면 debug mode로 emulator에서 실행도 가능합니다. (마찬가지로 2010.04.01 소스 기준으로 추후에 다르게 변경 될 수 있습니다.)

  • userAgent project를 Set as Startup project로 선택
  • package project properties -> Deployment -> Register Output No로 변경
  • userAgent project properties -> Deployment -> Remote Directory를 %CSIDL_PROGRAM_FILES%\bondi 로 변경

6. conclusion

bondi 에서 배포하는 RI source는 계속적인 수정과 버전 관리 process의 부재로  build & run 에는 아직 여러가지 문제들이 있습니다. 그렇지만 bondi APIs 의 내부적인 동작에 대해서 관심이 있다면 현재 참고할 수 있는 유일한 reference입니다.

How to build the BONDI RI(Reference Implementation).에 1개의 응답

  1. 권영민말하길

    저도 BONDI관련된 내용에 대해서 두달전부터 계속 진행하고 있는데,
    어떻게 해야 하나 많은 고민을 하고 있었답니다.
    올려주신 내용이 정말 많은 도움이 되네요.
    그런데 안드로이드로 올리는 방식에는 어떻게 해야 하나요?
    ㅠㅠ 저는 안드로이드로 올려야 하는데
    앞으로도 많은 도움 부탁드리고 ㅎㅎ 항상 참조하는데
    감사합니다.

    • byungjung말하길

      반갑습니다.
      OMTP에서 원래는 Windows Mobile RI 이외에도, Android 기반 RI도 계획이 있었는데요.
      아쉽게도 WAC 때문에 Spec의 전개 속도를 올리고자 WinMo RI만 있네요.
      제가 드릴 수 있는 조언은 BONDI 이전에 W3C Widgets Reqs 를 Android 에 먼저 구현 해 주시구요. 그 다음 BONDI Device APIs 에 대한 구현을 하나씩 해 나가면 될 것 같습니다.

      • 권영민말하길

        감사합니다. 조언.
        말씀하신대로 그런 방향으로 하고 있습니다.
        WAC에서 BONDI가 가장 유력한 대안으로
        나오고 있는 시점이니 그렇게 진행할 수 밖에
        없겠네요.
        앞으로도 많은 정보 공유 부탁드립니다.

        개인적으로 메일 보내주시면
        저희도 진행되는 사항에 대해서 같이 공유하고
        싶은데.. 가능하신지요?

        ^^ 메일 기다리겠습니다.
        감사합니다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: