[소고] 안드로이드 입문

@codemaru · March 27, 2013 · 10 min read

얼마전에 윈도우8로 시스템을 업그레이드 하면서 마이크로소프트가 정신을 차리기 시작하고 있다는 생각이 들었습니다. 가히 저에게는 혁신적인 운영체제라고 할 만큼 만족스러웠거든요. 그런데! 그런데! 윈도우8 태블릿이나 폰을 사고 싶어도 이건 시장에 물건이 없어도 너무 없더군요. 핡~ MS가 어쩌다가 이런 지경까지…

그런 찰나에 항상 그렇듯이 남들보다 한 세박자 늦게 모바일 개발에 뛰어들게 되었습니다. 말도 많고 탈도 많다는 바로 그 안드로이드 플랫폼으로 말이죠. 십만년전에 쓰던 구형 갤s 폰이 하나 있었는데 루팅하고 머 하고 해서 개발하려고 세팅 좀 하는데 느려도 너무 느린데다 화면까지 작으니 갑갑해서 태블릿을 하나 사야겠다고 생각을 했습니다. 그나마 넥서스7이 괜찮더군요. 부담없는 가격에 레퍼런스 버프까지. 급한 마음에 지르겠다고 하이마트를 갔는데 16기가는 품절이라 허탕만 쳤습니다. 그러다 우연찮게 점심 먹다 그 이야기가 나오게 됐는데 다음날 제 책상으로 넥서스7이 배달돼 있는 기적이 ㅋㅋㅋ~

이클레어, 프로요, 진저브레드를 갤s로 경험한 저에게 안드로이드란 그저 음악 끊기는 플랫폼이었습니다. 그런데 이번에 접하게 된 넥서스7, 거기다 안드로이드 젤리빈 4.2.1 쇼킹했습니다. 왜냐구요? 여전히 음악 끊기는 플랫폼이었거든요. ㅋㅋㅋ~ 물론 이건 좀 농담이구요. 음악이 끊긴다는 사실은 진실입니다. 여튼 진짜 놀란건 안드로이드의 진화였습니다. UI부터 시스템까지 때깔벗기고 날아갈 준비가 된 것처럼 보였거든요.

몇 일 태블릿을 쪼물딱거리면서 드는 생각이 아~ 윈도우 힘들겠는데, … 라는 생각이었습니다. 그 쪼그만한 넥서스7에서 안 되는게 없었거든요. RDP, 삼바, FTP, SSH, 터미널, 토렌트, … 제가 생각하는 그 모든 툴들이 벌써 앱으로 모두 공짜로 제공되고 있었습니다. 거기다 만화책 뷰어는 어찌나 아름다운지… 윈도우가 아쉬운 시점은 글 쓸 때하고 프로그래밍 할 때 말곤 없었습니다. 컨텐츠 소비 플랫폼으로는 슈퍼갑이었지요. 모바일 시장 점유율 75%가 괜한 소리가 아니었습니다.

Chart: Worldwide Smartphone OS Market Share, 2012Q3Description: IDC’s Worldwide Quarterly Mobile Phone Tracker provides smart phone and feature phone market data in 60 countries and 8 regions by vendor, device type, air interface, operating systems and platforms, and generation. Over 20 additional technical segmentations are provided. The data is provided four times a year and includes historical and forecast trend analysis. For more information, or to subscribe to the research, please contact Kathy Nagamine at 1-650-350-6423 or [email protected] detail about this tracker can be found at:http://www.idc.com/tracker/showproductinfo.jsp?prod\_id=37Tags: Samsung, Apple, Mobile Phone, Smartphone, IDC, tracker, Q3 2012, mobile phones, 3Q 2012, market share, galaxy, iPhone, Android, iOS, BlackBerry, Symbian, Windows Phone, Linux, 2012Q3, AnniversaryAuthor: IDCcharts powered by iCharts

안드로이드: 모바일은 내가 제일 잘나가~

이렇게 저의 험난한 안드로이드 입문이 시작됐습니다. libcurl 포팅이 골때린다는 인터넷 글들에 쫄았는데 막상 해보니 libcurl 안드로이드 지원이 삼십만년전에 끝났다는 사실에 놀랐고, boost를 어쩌지 이러고 있는데 Boost for Android가 벌써 만들어져 있다는 사실에 감탄했습니다. 그러면서… 아 이래서 세박자 늦게 시작하는게 좋구나라며 꿀빨고 있는데 프로요까지는 wchar_t 타입이 지원되지 않았다는 사실에 급 좌절했고 시스템에서 지원해주는 표준 유니코드 변환 함수가 없다는 사실에 무릎 꿀었습니다. iconv는 GPL 이슈 때문에 쓰기가 지랄맞다는 사실에 가슴 아팠고, ICU를 힘겼게 컴파일 했는데 빌드하니 so 파일 크기가 20메가가 넘어서 포기해야 했습니다. 결국 안드로이드 폴랫폼에 있는 ICU 라이브러리를 써야겠다고 생각했는데 이놈 조차도 안드로이드 버전 별로 다른 ICU가 포함돼 있어서 익스포트된 함수명이 다 다르다는 사실에 피를 토했지요.

이 모든 기간동안 저를 가장 괴롭혔던 것은 Visual Sutdio가 없다는 점이었습니다. 처음엔 Visual Studio로 작업을 했는데 하도 빨간줄을 그어대는 바람에 짜증나서 Sublime Text 2로 작업을 했습니다. 그럭저럭 쓰긴 편한데 인공위성 쓰다가 나침반들고 작업하려니 기가 막힐 노릇이었습니다. 거기가 학부시절 자바 실험 때부터 저하고는 안 맞았던 이클립스는 여전히 그 철학적 기반이 저와는 180도 다르다는 사실을 새롭게 확인하는 과정을 반복했습니다. 그나마 P가 자바 버프를 제공해서 네이티브 코딩을 제외한 부분에서 걱정할 필요가 없어서 다행이었지요. ㅋㅋ~

XIGNCODE 클라이언트 코드도 장난 아니었습니다. 몇년된 프로젝트 답게 레거시 코드가 너무 많았고 그 모든 레거시 코드들이 다 윈도우를 가정하고 작성된 것들이라 여기저기 수정할 곳이 장난 아니게 많았습니다. 처음에는 크로스 컴파일 할 수 있도록 소스를 구성하다가 이러다간 죽도 밥도 안될 것 같아서 아예 복사해서 새로 다 고치는 대규모 토목 공사를 해야 했습니다. 이렇게 험난한 크런치 모드 끝에 마침내, 기어이, 우리는 안드로이드 플랫폼에서 알흠답게 동작하는 XIGNCODE 바이너리 파일을 획득할 수 있었습니다.

         md 0
모바일 게임 보안도 이제 XIGNCODE가 책임지겠습니다 ㅋㅋ~

**그나저나 삼전구글 직원 분들이 참치, 마구로, 약주를 좋아하나 봅니다.**빌드명이 아스트랄하네요 ㅋ~

웃을 일이 아닙니다. 겁난다면 루팅하고 리눅스를 공부한 다음에 SSHDroid를 설치하시길 권장해 드립니다~

작업하는 내내 드는 생각은 안드로이드 플랫폼 참 문제있다라는 생각이었습니다. 안드로이드 플랫폼의 기본적인 보안 정책은 앱들에 별도의 uid, gid를 할당하는 방식을 사용합니다. 이게 좀 욱긴게 사실 백신 앱이 있어도 그놈도 이런 일반 권한으로 동작하는 개별 앱이기 때문에 접근 제한이 엄.청.나.게 심하다는 점입니다. 멀쩡히 백신에 탐지되는 프로그램도 아주 손쉽게 백신은 영원히 탐지하지 못하도록 만들 수 있는 방법이 지천으로 널린 노다지지요. 스파이앱이 활개치는 것을 막을 수가 없습니다. 스파이앱을 막기 위한 유일한 방법은 루팅을 하고 시스템 권한으로 동작하는 보안 소프트웨어를 직접 만드는 방법 밖에는 없습니다. 권한 구성이 신묘하게 돼 있는데 단지 참신하기만 합니다.

여튼 이제 시작입니다. 아직도 포팅해야 할 코드의 압박이…

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중