블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 

'어플개발'에 해당되는 글 1

  1. 2015.06.14 안드로이드 프로그래밍 시작하기 (7)
 

안드로이드 프로그래밍 시작하기 (둘러보기)


조대협 (http://bcho.tistory.com)


요즘 서버쪽 기술은 다소 시들해진것도 같고, 하는 일이 모바일 서비스인지라 (얼마전에도 그랬지만..) 알아야할것 같아서, 안드로이드 프로그래밍을 보기 시작했다. 
아무래도 서버 개발자 출신이다 보니 안드로이드 개발이라는 생소한 분야를 이 나이에 공부하면서 정리하는 내용이니 혹여나 내용이 허접하더라도.. 이해해주시기를.. (초보자 시각에서 정리한 내용입니다. )

구글에서 안드로이드 IDE인 안드로이드 스튜디오를 다운받아서 설치하면, 통합 개발 환경을 사용할 수 있다. 이 IDE는 보니, JetBrain의 IntelliJ를 기반으로 만들어진 환경이다. (구글이 이런 투자는 잘한듯..)
그러다 보니 이클립스를 쓰면서 불편했던 문제는 없이 제법 꽤 완성도가 높은 개발도구로 개발이 가능할 듯 하다.

스튜디오를 다운받아서 실행을 하고, 새로운 프로젝트를 만들면, 특이 한것이 다음과 같이, “Minimum SDK” 버전이라는 것을 고르는게 나온다. 즉, 어느 SDK버전으로 개발을 할것인지를 선택하는 것인데, 




이는 앱의 호환성과 기능 문제와 결부 된다. 너무 낮은 SDK버전으로 개발을 하게 되면 여러 앱을 커버할 수 있는 호환성은 높겠으나, 고급 기능을 사용할 수 없고, 높은 SDK 버전을 사용하게 되면 낮은 단말을 지원할 수 없어서 많은 사용자를 놓칠 수 있다.

위자드 상에서 가이드를 보면, 안드로이드 4.0.3 아이스크림 샌드위치 버전을 권장하는데, 이 버전을 사용하면 현존 단말이 90.4% 가 커버가 가능하다고 나온다.




약 10%가 커버가 안된다는 것인데, 말이 10%이지 100만 배포의 경우에는 10만대, 1000만 배포의 경우에는 100만대의 시장을 잃어버린다는 것이지 어마어마한 규모이다. (근대 2.X 대에서 요즘 앱이 잘돌아가나? 가벼운 앱이면 몰라도, 어느정도 기능이 있으면 어렵지 않을까??)

안드로이드 스튜디오에서 프로젝트를 생성하면 다음과 같은 파일 구조가 나온다. 몇몇 중요한 점만 짚고 넘어가보자




자바 소스 코드들은 main/java 디렉토리에 들어가 있고,
기타 리소스 파일들은 main/res 디렉토리에 들어가 있다. 일반적인 자바 프로젝트와 크게 다르지 않다
빌드 스크립트가 특이하게 gradle로 생성이된다. 예전에는 무엇으로 생성이 되었는지 모르겠지만, maven에 익숙한 나로써는 다소 챌린지이다.
그리고, proguard 관련 설정 파일이 생성되는 것으로 봐서, 기본으로 사용이 가능한거 같은데, proguard는 난독화 (소스 코드를 읽기 어렵게 만들어서 디컴파일시에 소스코드를 봐도 이해 하기가 어렵게 만드는 도구) 기능이 통합 되어 있는 듯하다.

몇몇 눈에 띄는 중요한 디렉토리와 파일들이 있어서 정리를 해보면 다음과 같다.

layout 파일 
모바일 프로그래밍은 GUI가 있는 만큼 역시나 안드로이드도 레이아웃 시스템을 사용한다. 예전 Java Swing이나, 현대 웹 프로그래밍의 BootStrap UI 프로임웍과 크게 다르지 않다. IDE에서 에디팅을 통해서 작성할 수 있기 때문에, 일반 컴포넌트를 사용하는 GUI 배치 구성은 layout이라는 파일에 작성하여 지정을 한다.

string.xml 파일
라벨등에 사용되는 기타 문자열들을 string.xml이라는 파일에 몰아서 저장해놓고 불러 쓸 수 있는데, 이는 Localization(지역화)를 위해서 디자인 되었다. 하나의 파일에 모든 텍스트를 지정해놓고 사용하고 다른 언어를 바꾸게 되면 이 string.xml 파일만 교체하면 되기 때문에, 지역화에 대응하기 좋은 구조이다.




그런데, 하나의 앱으로 여러 언어를 표현할 수 있는 Globalization(세계화)지원은 어떻게 하지? 



본인은 구글 클라우드의 직원이며, 이 블로그에 있는 모든 글은 회사와 관계 없는 개인의 의견임을 알립니다.

댓글을 달아 주세요

  1. 부사너 2015.06.15 00:11  댓글주소  수정/삭제  댓글쓰기

    좋은 글 감사합니다^^

  2. 뽀록이야 2015.06.16 07:32  댓글주소  수정/삭제  댓글쓰기

    늘 좋은 포스트 감사합니다~

  3. 2015.06.22 17:41  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  4. 저도초보 2015.10.09 22:34  댓글주소  수정/삭제  댓글쓰기

    조대협님 마지막에 헷갈리는 표현이 있어 거들고갑니다 localization과 globalization이 같은 이야기 아닌가요?? 안드로이드의 strings.xml은 언어별로 폴더를 만들게 되어있어서 기본폴더외에 values-kr폴더를 만들고 strings.xml을 넣게되면 단말 로케일이 한국어일경우는 한국어 문자열이 그외의경우는 기본문자열이 표시됩니다 앱을 국가별로 따로만들필요없이 시스템로케일을 따라가게되는것이지요
    혹시나 알고계신건데 제가 괜히 추가댓글단거같기도하지만 혹시나 설명미흡하셔서 다른분들착각하실까 거듭니다

    • 조대협 2015.10.11 23:41 신고  댓글주소  수정/삭제

      글로벌라이제이션은, 여러 언어나 통화를 넣어서 하나의 앱이 여러 국가에 쓰일 수 있도록 하는 것이고, 로컬라이제이션은 한국을 위해서는 15세 인증을 넣는다던지, 한국에서는 카톡 계정 인증을 지원한다던지, 그 특정 지역(국가)에만 필요한 기능을 제공하는 것을 뜻합니다.

  5. 타울 2015.12.16 21:03 신고  댓글주소  수정/삭제  댓글쓰기

    좋은 글 감사합니다. "저도초보"님 덕분에 조대협님의 마지막 질문에 대한 답을 얻었네요 ㅎㅎ

  6. Peter Choi 2016.03.06 22:38  댓글주소  수정/삭제  댓글쓰기

    쉽게쉽게 써주셨네요~ 감사합니다. 계속 정보 얻어갈게요~