“안드로이드 개발자는 집에 안드로옵니다”라는 우스갯소리가 있다. 안드로이드 개발을 프로요 이상 지원으로 개발해온 개발자들에겐 번뇌의 나날들이었다. 커뮤니티에는 Éclair(API-5) 이상으로 개발하는 분도 있는데 아들 둘을 기르는 엄마에 이어 극락과 천국의 자유이용권을 얻으셨을 것이다. 매일 코딩하며 애정을 가지고 대하면 이유 없이 토라지고, 잘 맞추면 다른 쪽에서 충돌이 나고, 설명도 잘 안해주고, 남들에게 물어물어 알아내면 나만 겪는 문제는 아닌 것 같고.

김영재 [email protected] | 카이스트에서 수학문제풀이에 대한 패턴분석을 연구했다. 지금은 중, 고등학생 학습 Q&A 앱 ‘바로풀기’의 최고기술책임자다. 분당의 한 중학교에서 방과후 수학교사를 3년째 진행하며 교육과 IT를 엮으려고 노력 중이며 스타트업 개발자로서 Microsoft Azure MVP로 클라우드 아키텍처 설계와 안드로이드 개발을 병행하고 있다.


어쩐지 개발자들에겐 낯익은 삶의 리듬 아닌가? 그렇다. 모든 프로그래머는 자신이 다루는 기술과 연애하고 있고 안드로이드 프로그래머도 마찬가지다. 우리는 그저 어제의 그녀를 모델링하 고 내일의 연인을 시뮬레이션하며 오늘의 연인에게 최적화해야 한다.

리눅스 가문의 아빠, 자바 언어의 엄마 사이에서 자란 안드로이 드는 이런 성격으로 우리 앞에 다가왔다. 불친절한 문서, OS 버전 별 차이점, support library 버그, 제조사 별 오류, 아키텍처 적으 로 미숙하게 구현된 프레임워크, OS 역사에 유례없는 복잡한 라이 프사이클, Out-of-Memory 크래시, 모뎀으로 두근대며 jpg 받았 던추억을상기시키는느린컴파일,맞추고또맞추는위아래위위 아래호환성,구글과AOSP커스텀의사랑과전쟁.

이것이 2년 동안 안드로이드앱 프로그래밍을 하며 생긴 추억이 다. 매 버전마다 소개팅하는 느낌이었지만 꽝이었다. 하지만 우리 는 언젠가부터 집착이 생겼는지 매일 만났던 모든 연인들과 연락 하며 어장관리를 당하고 있다. 이런우리앞에안드로이드M이프리뷰로나왔다.자,이제다 시 내일의 그/그녀와 소개팅을 준비해보자. 이미 전화번호를 받고 메신저에얼굴이뜬셈이다.이글은어장에서탈출하려는한개발 자가 객관적이고 냉정하게 보는 안드로이드 M 프리뷰 관찰기다.

퍼미션(Permission) 변화

가장 먼저 꼽을 변화는 퍼미션의 변화다. 여기서 퍼미션은 OS의 파일시스템의 권한을 의미하는 것이 아닌 기능에 대한 접근 권한 을 의미한다. 파일 쓰기 권한, 인터넷 접속 권한, 블루투스 액세스 권한, 많은 분들이 불안해하는 연락처나 SMS 접근 권한 등이다. 실상 많은 안드로이드 개발자는 퍼미션에 대해 필요한 것만 다루 지 않고 이용약관 복사붙이기 하듯 필요보다 많은 수의 퍼미션을 복사해서쓴다.그이유는처음스토어에서설치할때만유저가승 인하면그후엔그퍼미션에대해무제한의접근이가능하며,만일 새 퍼미션을 그 후에 추가하면 자동업데이트가 안되기 때문이다.

안드로이드가 다른 스마트폰 OS와는 달리 이러한 권한 설정 형 태를취한이유는그개발철학이이토록민감한개인정보를다루 거나 이토록 대중적으로 쓰이게 될거라 예상하지 못했기 때문이라 고 생각한다. 여하간 안드로이드 M은 이제 다른 OS 플랫폼(iOS, Windows Store)처럼 접근 직전에 권한을 요구하도록 바뀌었다. 새로운퍼미션정책이적용안된기존앱에대해서는크래시가가 급적 발생 안하도록 하기 위해 예외(Exception) 대신 비어있는 데 이터를 반환한다고 하지만, 그 비어있는 데이터를 처리 안하는 앱 도많기에상당수앱이불안정하거나실제실행결과와다른모습 을 보일거라 예상한다.

좀더 자세히 보자. 새 퍼미션 모델을 문제없이 사용하기 위해서 는 퍼미션이 이미 있는지 확인하는 checkSelfPermission, 없을 시 요청하는 requestPermission, 요청한 결과를 받는 onRequest PermissionsResult 메소드를 모두 거쳐야만 한다. 역시 내일의 그/그녀도 만만치 않다는 생각이 든다. 윈도우 스토어 앱의 경우를 예로 들면 GetGeopositionAsync()처럼 해당 기능의 메소드를 실 행시 OS 수준에서 퍼미션을 확인하고 결과를 반환하기 때문에 더 편리하며, 이는 iOS도 마찬가지다. 다른 플랫폼이 단 하나의 메소 드만으로 처리할 수 있고 안드로이드는 그 이후에 적용했음에도 이런 편리한 방법으로 안되어있는 이유는 안드로이드 개발 철학이 이용자(개발자)에 친화적이라기보다는 기술적 제어에 더 친화적인 개념을 가지기 때문이 아닐까 이해해본다.

하위호환성에 대해서는, 프리뷰 버전이라 조정 중인 것으로 보 인다. 일단은 <uses-permission-sdk-m> 이라는 별도의 퍼미션 명으로 기록하도록 하고 있다. 즉, 롤리팝 이하 버전에서는 해당 퍼미션명은인식되지않는다.이에대한퍼미션은총8개그룹, 25개항목으로적지않다.SMS를직접보낼수있는퍼미션도예 전과 동일하게 있으며, 이런 스팸으로 악용될 소지가 있는 퍼미션 은없애고싶었겠지만한편으론기존에많은앱이가지고있는서 비스 시나리오를 최대한 깨뜨리지 않으려는 노력으로도 보인다.

뜻밖의 Android Studio 1.3

이번I/O에서M의발표외에개발경험을혁신할가장큰변화 는 바로 안드로이드 스튜디오1.3(Android Studio 1.3)이다. 구글이 Eclipse에서 Android Studio로 권장 IDE를 변경하면서 적극적으 로 도입한 것이 gradle 빌드 시스템이다. Gradle이 도입된 후에는 적어도 동료들끼리는 거의 문제가 없이 소스코드를 공유할 수 있 다. 물론 gradle을 이용한 오픈소스 프로젝트라 할지라도 정상적 으로동작안될때가많은것은여전하지만말이다.

Gradle 빌드 시스템이 협업 시의 혼란을 어느 정도 줄여줬지만 그만큼의 고통으로 다가온 것은 빌드 속도였다. 현재 100만원 수 준에 판매되는 넉넉한 사양의 데스크톱PC 기준으로 20초 정도가 소요되었던 것이 gradle 빌드를 이용하면 1분 30초 가량 소요된다. 데스크톱보다 성능이 부족한 노트북은 3분 가까이 소요되는데 컵 라면하나를익힐수있는시간이니무시할수없는소중한시간이 다. Android Studio 1.3은 프리뷰 기준으로 꼬박 2배 가량 빨라졌 다. 정식 버전에서는 더 빨라지리라 기대한다. 참고로 글을 작성하 는 현재 시점에 Dev 채널에 Android Studio 1.3 프리뷰 버전이 올 라와있으니 꼭 업데이트를 하자. 통상적으로 프리뷰 버전은 실제 제품개발에사용하지않아야하지만컵라면은이제그만먹자.이 미 많이 먹었다.

구글이 NDK 지원을 하기 시작하면서 더는 Eclipse를 사용할 이 유가 없어졌다. Android Studio정식 버전이 나오기 전부터 사용하 기 시작했지만 개발자들을 만나보면 여전히 Eclipse를 사용하는 분도 많고 중견기업에 속한 개발자들 대상으로는 과반이 넘을 거 라 예상된다. 이제는 갈아타자. Android Studio에는 단축키를 Eclipse로 설정해주는 기능도 있으니 걱정 말고 옮기라고 하고 싶 다. 왜 잘 쓰고 있는 Eclipse에서 갈아타야 하느냐고 설명을 필요 로 한다면, 구구절절 기술적으로 설득하는 것보다는 적절한 예시 를 들고자 한다. 이제 Eclipse로 안드로이드를 개발하는건 라면을 숫가락으로 먹고 있는 것과 마찬가지다. 옆에 젓가락이 있으니 그 것으로 먹어보자. 김치도 같이 집어 먹을 수 있으니 더 맛있을거다.

하드웨어 지원