27 Mar
2013
Posted in: 코드
By    6 Comments

안드로이드 입문


안드로이드 입문
by 신영진(YoungJin Shin), codewiz at gmail.com, @codemaru, http://www.jiniya.net

얼마전에 윈도우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 knagamine@idc.com.Further 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 바이너리 파일을 획득할 수 있었습니다.


xigncode-android


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

그나저나 삼전구글 직원 분들이 참치, 마구로, 약주를 좋아하나 봅니다.

빌드명이 아스트랄하네요 ㅋ~



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

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

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

Browser does not supports flash movie

  • 트랙백 주소: http://www.jiniya.net/wp/archives/9960/trackback

관련 글

  • http://iam-hs.com XeroNic(HS)

    안드로이드 환경이랑 PC 환경이랑 꽤 달라서~~
    고려해야될게 어마어마하더라구요..;;
    게임 같은 경우도…일반 PC 온라인 게임 보안처럼 접근하면…
    골때리는 사태가..;;; ㅎ

  • 형이다

    안드로이드 이름 정하는거 삼전이 아니고 구글이다. 정확히는 본사에서 일하시는 한국분이시지.. ㅋㅋ
    뭐냐 이거 짧다고 등록 안되네…-_-+ 얼마나 더써야 하는겨… 될때까지… 어이가없군… 장난하냐?? 이거 당장고쳐랴~~ 안쓰고말지…
    ………………………..

  • http://khmirage.tistory.com 환상경

    저도 몇일전에 넥서스7을 중고로 싸게 구입할 기회가 있어서 구입을 했습니다.
    마지막으로 사용했었던 안드로이드가 갤럭시탭7″ 진저브래드였었는데 그때는 정말 난감할정도로 사용성이 최악이었는데
    이번 젤리빈 넥서스7은 꽤 좋아진 모습을 보여줘서 놀랐습니다.
    뉴아이패드를 써오다가 넥서스7에서 멀티미디어쪽을사용해보니 패드랑은 비교가 안될정도로 편리함을 제공해주는거에 또 한번 놀랐습니다.
    뉴아이패드가 룩앤필이나 안정성면에서는 좋다고 하지만 무인코딩이라던지 삼바로 연결해서 동영상 재생이라던지 그런면에서는 안드로이드에 상대가 안되네요 ~_~
    그래도 서로간에 장단점이 많다보니 둘다 병행해서 계속 사용하게 될거 같습니다.
    (물론 앤드유저로서 ㅋㅋㅋ)

    개발관련해서는 아직 안드로이드쪽이 문제가 많다고 들었는데 실제로 그랬나 보네요 흐허허허허허

  • http://jazzbug.tistory.com 재즈벌레

    안드로이드용 avast가 방화벽 기능을 사용하기 위해서 관리자 권한을 요구하기 때문에 사용하려면 루팅을 해야합니다. 방화벽을 안쓰면 루팅 필요없구요… 광고 뜨는 앱들 방화벽으로 차단하기 위해서 예의상 설치하고 사용하긴 하는데 바이러스 차단은 잘 되고 있는건지 마는건지 저로서는 알 수가 없네요.
    그나저나 환상경님 여기 계셨군요 ㅋ 넥7 최고죠.. 근데 넥10이 너무 땡기네요.

  • Virtulaizer

    안녕하세요. 보안업에 흥미를 가지고 있는 학생입니다.
    모바일게임 서버프로그램 코드는 어떻게 작성하는지 아시는 자료가 있으시다면 부탁드려도 될까요?
    게임서버에 보안서버는 플라그인 식으로 적용하시는 건가요? 아니면 독자적으로 적용하시는건가요.
    참 그리고 서버에서 리용하는 안전한 로그체계는 어떤 걸 리용하시는가요?
    사용제품을 리용하시는가요? 아니면 카스터미이징하신걸 쓰시는가요?
    참고할 만한 프로그램은 무엇인가요?
    앗, 질문이 너무 길어져서 죄송합니다. 감사합니다.

  • Pingback: 모바일 게임 보안 솔루션: XIGNCODE3 for Android | 괴짜 프로그래머의 일상사~