Android 기술 Q&A 
Q&A 게시판에 질문을 남기신 글에 대한 답변/덧글/쪽글에 대한 Push 메일 서비스를 받고자 하시는 분들은
☞ Push 메일 서비스 공지를 필독하시기 바랍니다.
Re..Native Application에 대한 안드로이드 포팅
작성자
작성일 2008-12-27 (토) 03:00
ㆍ추천: 0  ㆍ조회: 9448      
IP: 122.xxx.44

아래의 내용은, 얼마전 동일한 고민을 하시는 분께 제가 메일로 보냈던 내용입니다.

참고하세요.



 

Native Application에 대한 안드로이드 포팅

 

 

결론부터 말하자면, 안드로이드 플랫폼상에 Native C 또는 C++ 애플리케이션을 탑재하는 것은

별로 권장되고 있지 않습니다. 하지만, 전혀 불가능한 것은 아니라는 판단도 하고 있습니다.

이런 차원에서 저의 의견을 정리해 보도록 하겠습니다.

   

먼저, Native C 또는 C++ 애플리케이션을 안드로이드에 탑재하고자 할 때, 가장 우선적으로

고려해야 할 사항은, 안드로이드 소스코드(source.android.com) 배포상에 “Bionic Project”라고

명명된 C runtime관련 영역에 대한 정확한 이해 입니다. 안드로이드에서는 기존에 사용되는

standard glibc, uclibc 를 사용하지 않고, bionic libc를 사용하고 있는데 이것에 대한 제약을

이해하는 것이 우선이며, 더불어 C++ 관련된 제약을 이해하는 것도 중요합니다.


 

히 안드로이드에서는 C++과 관련해서 STL(Standard Template Library)를 지원하지 않는다는

것을 분명히 인식하는 것도 필요할 듯 합니다. 안드로이드에서 STL을 지원하지 않는 이유는

그것을 기반으로 만들어진 바이너리의 사이즈가 매우 크다는 것과 더불어 그것이 ARM과 같은

임베디드 CPU에 적합하지 않기 때문입니다.

 

두번째로 고려해야 하는 제약은, Native 애플리케이션을 안드로이드 플랫폼 기반의 디바이스에

인스톨할 수 있는 표준화된 방법이 존재하지 않는다는 현실입니다. 이러한 현실은 해당

애플리케이션의 배포를 Firmware 수준으로만 제공해야 하는 제약을 만들고 있습니다.

(개인적으로는 이 부분에 대한 효과적인 배포 방식에 대해 좀 더 고민해 보고는 있습니다.)

 

세번째로는 안드로이드에서 사용되고 있는 GUI 환경을 정확하게 이해하는 것이 필요한 듯 합니다.

안드로이드는 애플리케이션 프레임워크 영역에서 xml 기반의 View 시스템, Resource 관리에

기반하고 있으며, 구조적으로는 독자적인 Event handling Thread 구조를 유지하고 있습니다.

이는 기존에 이미 다른 플랫폼기반에서 GUI를 가지고 있는 애플리케이션의 GUI를 거의 사용할 수

없는 제약을 만든다고 할 것입니다.

 

이러한 이유로, 기존의 타 플랫폼상에서 구동되는 애플리케이션을 안드로이드에 포팅하기 위해서는

다음과 같은 절차로 진행되는 것이 바람직할 것으로 생각됩니다.

-       GUI 영역에 대한 새로운 디자인 및 별도 구현.

-       C++의 경우, STL을 사용하고 있는 구조가 있다면 STL 을 제거할 것

-       JNI 기반으로 호출가능한 Native Lib. 제작

-       안드로이드 애플리케이션 상에서 해당 JNI 호출 구조 마련.

(이와 관련해서는 Zygote Pre-loaded Native Library 구조를 고려해야 함.)

-       안드로이드 Runtime기반의 안드로이드 애플리케이션과 Native Lib.의 배포방식 마련.
(이 부분은 좀 더 많은 기술적, 사업적 고려가 있어야 할 듯함.)

 

 

=====================================
■ [준빠] 안드로이드 포팅 관련 초보 질문드립니다 (2008-12-26 17:43)
안녕하세요.. 저희 회사가 가지고 있는 솔루션을 안드로이드에 포팅하려고 합니다.
 
전체적인 그림은 저희 솔루션을 리눅에서 C++로 컴파일후에..
Java로 JNI를 이용해 엔진과(C++) UI(java) 에서 서로 이벤트를 주고 받으며..
동작하는 App를 기획하고 있습니다.
 
1. 저희 보유 솔루션은 C++로 작성되어 있습니다만..
   먼저 Linux에서 컴파일해야 한다고 들었습니다.
   그럼.. 리눅스용 so 파일을 만들어야 할텐데.. so를 만들때 주의할점이 있나요?
 
2. so를 만들고 Windows 에뮬레이터에서 실행해 볼수도 있는건가요?
 
3. C++로 만든 엔진을 JNI로 연동하여 작업할수 있는건가요?
 
위 질문이 해결되도 바로 시작하기는 쉽지 않습니다.
어디서 부터 헤딩할지는 시작해봐야겠지요..
처음 하다보니.. 개발 순서가 어떻게 되는지 감을 잡기가 쉽지 않습니다.
몇가지 질문드리니.. 조금이라도 도움 부탁드리겠습니다.
 
수고하십시요~

덧글 쓰기 0
3500
※ 회원등급 레벨 0 이상 읽기가 가능한 게시판입니다.
    N     분류     제목    글쓴이 작성일 조회
4653 안드로이드 배워보고 싶습니다. 2008-12-16 7915
4652 안드로이드 소스 트리 2008-12-17 8415
4651 s3c6400 android 포팅 절차 2008-12-17 9137
4650 Re..안드로이드 드라이버 이해를 위한 공부는 어떤 것을 먼저 .. 2008-12-17 8124
4649 proxy 설정은 어디서 어떻게 하나요? 2008-12-18 10504
4648 Emulator 정보는 어디에 저장되어 있나요? 2008-12-18 8067
4647 application 실행 오류 문제 2008-12-18 8173
4646 App 실행이 안되요... 2008-12-18 8847
4645 소스상에서 widget 의 위치 ... 2008-12-18 7913
4644 mediaplayer 질문입니다. 2008-12-19 13181
4643 LCD UI 회전 2008-12-20 8422
4642 view클래스에서의 activity실행방법에 대해 질문입니다... 2008-12-22 8077
4641 Activity Manager 실행 오류 2008-12-22 8060
4640 왕~초보 질문이요.. 2008-12-22 8002
4639 pop3에 접촉하기. 2008-12-22 8155
4638 Eclipse Ganymade 에서 발생하는 Emulator Error, 어떻게 해결.. 2008-12-22 8390
4637 안드로이드에서 pop3접속할대 javax사용 가능 하나요..ㅇ.ㅇ.. 2008-12-23 9518
4636 Fedora에서 android 컴파일 2008-12-23 10905
4635 타겟 커널 컴파일 문제 좀 도와주세요 2008-12-23 8462
4634 제품생산에 대한 라이센스? 2008-12-24 9034
4633 리소스 layout에 xml파일 추가 하는 것 관련 질문입니다... 2008-12-24 8519
4632 터치나 키패드 없이 터미널 창으로 Application 실행 방법.. 2008-12-24 8225
4631 엑티비티를 더 멋이게 보이는 방법? 2008-12-24 8164
4630 안드로이드 마켓의 국내 개발자 등록 문제에,,,.. 2008-12-26 8351
4629 dev phone unlock 2008-12-26 8587
4628 안드로이드 포팅 관련 초보 질문드립니다 2008-12-26 8251
4627 Re..Native Application에 대한 안드로이드 포팅 2008-12-27 9448
4626 저도 포팅에 관련되서 질문 좀 드릴께요 ㅠ 2008-12-27 8427
4625 스트리밍 관련 문의 2008-12-29 8191
4624 Re..뚫었습니다!! 2008-12-29 9048
4623 [질문]안드로이드 상에서 화면 크기 변경 2008-12-29 9750
4622 [질문]또 올립니다.^^;; 하드웨어 테스트하는 방법.. 2008-12-29 7629
4621 Framework 관련 질문 2008-12-29 8417
4620 안드로이드 마켓 2008-12-29 8107
4619 Re..[재문의] 스트리밍 관련 2008-12-29 9326
4618 전화오는걸 이벤트로 체크할 수 있나요? 2008-12-31 8374
4617 Re.. PhoneStateListener 예제. 2008-12-31 21050
4616 dev phone을 어떻게 구입할수 있나요? 2008-12-31 8015
4615 새해인사 드립니다. ^^ 그리고 질문도. ㅋㅋ 2009-01-01 7527
4614 Re..실시간으로 질문하네요^^ 2009-01-02 8530
4613 background와 service에 대해서.. 2009-01-02 8068
4612 안드로이드 기본 어플관련.. 2009-01-02 8165
4611 G1 폰 언락 질문 입니다. adb shell -> device not found... 2009-01-02 11145
4610 adnroid 1.0 porting 질문입니다. 2009-01-03 8480
4609 Android 포팅 겸 임베디드 실습 보드로 쓸만한 것?.. 2009-01-04 9528
4608 음 질문은 아니고 제안.. 2009-01-05 8110
4607 이제 막 입문자가 질문 드립니다. 2009-01-05 7805
4606 안드로이드 어플 선택 실행방법? 2009-01-05 8524
4605 새 Activity 생성에 관한 질문입니다... 2009-01-05 8495
4604 안드로이드에서 DB질문이요... 2009-01-05 8159
12345678910,,,101