안녕하세요? 우리를 그토록 뜨겁게 달구었던 강렬한 태양도 이제는 지쳤나 봅니다. 역시 자연은 위대하죠? 얼마 전 구글에서 안드로이드 운영체제인 젤리 빈을 릴리스했습니다. 4.3 버전의 젤리 빈은 “더 달콤하다”는 구글의 광고처럼 여러 가지 개선된 성능을 보여준다고 합니다. 하지만 이전 버전에서처럼 한글 글꼴을 지원하지 않아 우리로서는 참 답답합니다. 도대체 구글의 생각이 무엇인지 의심스럽기도 하고, 실수라 하더라도 릴리스된 지 한 달이나 지난 현재까지도 아무런 후속 조치가 없는 것을 보면 화가 나기도 합니다. 어찌 됐든, 목마른 사람이 우물 판다는 우리 속담도 있고, 열심히 공부해서 실력을 쌓으려고 큰맘 먹고 책도 샀는데, 한글이 나오지 않아 참담함을 느끼면 곤란할 테니, 일단은 해결 방법을 찾아야겠죠? 곧(10월 중) 제이펍에서 안드로이드 최신 버전인 젤리 빈 4.3에 맞춰 새 책을 출간합니다. 그에 앞서 아래 내용을 차근차근 따라 해두면 좋을 듯합니다. 한 가지 부탁드리겠습니다. 이 글을 다른 곳에 그대로 복사하지 마시길 바랍니다. 이 글의 링크를 공유하는 것은 괜찮지만 글 자체를 복사하는 것은 안 됩니다. 그리고 젤리 빈 4.2 버전부터 한글 미출력 오류가 있었는데, 말씀드릴 해결 방법은 젤리 빈 4.2 버전에도 똑같이 적용할 수 있습니다. 그럼 시작해 볼까요? 따듯한 차 한 잔 준비하시고요!


서른다섯 번째 이야기

안드로이드 젤리 빈 4.3 에뮬레이터에서 한글 출력하기

작성일: 2013년 8월 29일

작성자: 배장열


=====================================================================================================

우선, 구글의 안드로이드 개발자 사이트에서 SDK를 다운로드해야겠지요? 이 과정은 생략합니다. 예전에는 이클립스와 SDK를 따로 다운로드해야 했는데, 버전이 올라가면서 통합되어 이제는 구글의 안드로이드 개발자 사이트에서 SDK만 다운로드하면 됩니다.


* 제 시스템 환경

패러렐즈 7에서 가상 OS로 윈도 7(32비트) 사용 중

호스트 OS는 맥 OS X 10.8.4 마운틴 라이언


저는 윈도용 32비트 SDK를 다운로드했습니다. 다운로드한 압축 파일을 풀면 폴더 하나가 생깁니다. 이 폴더 안으로 들어가면 그림 35-1처럼 보입니다.


<그림 35-1 이클립스와 젤리 빈 SDK 폴더>


<그림 35-2 패키지 업데이트>


일단, 한글이 출력되지 않는 모습을 봐야겠죠? 일종의 “비포 앤 애프터”입니다. 처음 이클립스를 실행하고 Android SDK Manager를 실행하면 그림 35-2처럼 설치해야 하는 항목이 눈에 띕니다. 하나는 ARM 시스템 이미지이고, 다른 하나는 Google USB Driver입니다. ARM 시스템 이미지가 리비전 2로 업데이트가 되어 혹시 한글 미출력 오류가 해결되었나 생각했는데, 역시였습니다. 패키지를 설치했으면, 애플리케이션을 하나 만들어볼까요?


제가 샘플로 만든 애플리케이션은 에뮬레이터의 언어 설정에 따라 화면에 “Hello World!”나 “안녕하세요.” 텍스트 중 하나와 “한글이 왜 안돼?”라는 한글 버튼을 표시합니다. 그림 35-3은 4.3 에뮬레이터에서 실행된 결과 화면입니다.


<그림 35-3 에뮬레이터에서 샘플 애플리케이션을 실행한 결과>


“Hello World!” 텍스트는 현재 에뮬레이터가 “영어”로 설정돼 있어 그렇게 나타난 것입니다. 버튼은 제대로 표시되지 않네요. 에뮬레이터 언어를 “한국어”로 변경하면 “Hello World!”는 “안녕하세요.”로 변경되어 표시됩니다. 하지만, 에뮬레이터 언어 설정에서 “한국어”로 변경하려고 하면 그림 35-4처럼 황당한 일이 일어납니다. 한국어 항목이 보이지 않는 거죠. 에뮬레이터 시스템 이미지에 한글 글꼴이 없어서 이렇게 보이는 것입니다.


<그림 35-4 언어 설정에서 한국어 항목이 빈 상태>


그럼 에뮬레이터의 시스템 이미지는 어디에 있을까요? 구글의 안드로이드 개발자 사이트에서 다운로드한 SDK 압축 파일을 푼 결과가 그림 35-1이었습니다. 여기서 sdk, system-images, android-18, armeabi-v7a를 차례로 클릭하여 폴더 안으로 들어가면, system.img 파일이 보입니다. 여기까지 진행한 결과가 그림 35-5입니다. 젤리 빈 4.2.2 버전 또한 비슷한 폴더 경로를 따라가면 됩니다. 다만, android-18 폴더가 4.3 안드로이드 버전을 의미한다는 점만 기억하시면 될 듯합니다.


<그림 35-5 system.img 파일의 위치>


system.img 파일이 에뮬레이터의 시스템 이미지 파일입니다. 여기에 한글 글꼴이 없어서 그림 35-3과 그림 35-4처럼 보인 겁니다. 다만, system.img 파일은 우리가 흔히 보는 iso 이미지 파일이나 img 이미지 파일과 다릅니다. 안드로이드가 인텔 프로세서에서 동작하는 운영체제가 아니다 보니 yaffs라는 파일시스템으로 시스템 이미지 파일을 압축했습니다. 글이 길어지니 yaffs 파일시스템에 대해서는 직접 구글링해 보시기 바랍니다.


우리는 이 system.img 파일에 한글 글꼴(여기서는 네이버의 나눔고딕코딩 글꼴을 사용함)을 추가하고 다시 압축할 것입니다. 그러면 에뮬레이터에서도 한글이 보이겠죠?


우선, system.img 파일을 풀 수 있는, 즉 yaffs를 지원하는 유틸리티가 있어야 합니다. yaffs 유틸리티는 리눅스용도 있고, 윈도용도 있습니다. 여기서는 윈도용을 개발자 웹사이트에서 다운로드하겠습니다.


* yaffs 유틸리티 다운로드 웹사이트: http://code.google.com/p/yaffey/


위의 웹사이트에서 윈도 32비트용 버전 0.2를 다운로드할 수 있습니다. yaffey라는 이 유틸리티는 몇 가지 제한 사항이 있습니다. 그 중에서 가장 중요한 것은 리눅스에서 사용되는 심볼릭 링크(혹은 소프트 링크)를 생성할 수 없다는 점입니다. 따라서 무작정 한글 글꼴만 추가하면 에뮬레이터에서 한글 글꼴을 인식하지 못합니다. 그 대신, 영문 기본 글꼴을 한글 글꼴로 바꾸어야 합니다. 그러니 엄밀히 말하면 한글 글꼴을 추가하는 것이 아니라 기본 영문 글꼴을 한글 글꼴로 변경하는 것입니다. 심볼릭 링크를 지원한다면, 단순히 한글 글꼴을 추가하고 기본 영문 글꼴의 심볼릭 링크를 생성하면 됩니다. 어찌 됐든, 에뮬레이터는 어차피 테스트용이고, 실제 단말기에서 테스트하는 것과는 다른 문제이므로, 어디까지나 임시방편으로 적용하시는 것이 좋습니다. 물론, 원래 system.img 파일은 백업해두어야겠죠?


yaffey 유틸리티를 실행합니다. 도구 모음에서 Open을 클릭하고, 위에서 말씀 드린 시스템 이미지 파일을 찾아 불러옵니다. 요약 정보를 알려주는 창(그림 35-6)을 닫으면, 시스템 파일의 폴더 구조가 나타납니다. 여기서 fonts를 더블클릭하면 설치된 글꼴이 나타납니다. 글꼴들을 훑어보면 그림 35-7처럼 DroidSans.ttf와 DroidSans-Bold.ttf가 각각 Roboto-Regular.ttf와 Roboto-Bold.ttf를 심볼릭 링크로 가리키고 있음을 알 수 있습니다. 따라서 에뮬레이터가 생성되면 Roboto-Regular.ttf와 Roboto-Bold.ttf가 기본 영문 폰트로 사용되는 것입니다. 우리는 이 두 글꼴 파일을 삭제하고, 이 자리에 나눔글꼴 두 개를 추가한 뒤, 이름을 각각 Roboto-Regular.ttf와 Roboto-Bold.ttf로 바꿀 것입니다. Roboto-Regular.ttf와 Roboto-Bold.ttf는 그림 35-8을 참고하시기 바랍니다.


<그림 35-6 yaffey 유틸리티>


<그림 35-7 system.img 파일의 글꼴들>


<그림 35-8 Roboto-Regular.ttf와 Roboto-Bold.ttf>


한 가지 주의할 점이 있습니다. 앞에서 말씀 드린 대로 리눅스에서 작업한다면, 기존 글꼴 파일을 삭제할 이유가 없습니다. 단순히 한글 글꼴을 추가한 뒤 심볼릭 링크만 생성하면 됩니다.


추가할 한글 글꼴은 네이버의 나눔 글꼴입니다. 개발자용으로 배포되고 있는 나눔고딕코딩 글꼴을 선택하는 것이 좋습니다. 네이버 웹사이트에서 글꼴을 다운로드한 뒤, 폴더에 풀어놓습니다. 이때 폴더 이름에 한글이 들어 있으면 yaffey가 인식을 못하니 주의하세요. 이제 yaffey 유틸리티에서 나눔고딕과 나눔고딕볼드, 두 글꼴을 복사합니다. 이때 주의할 점이 있습니다. yaffey 유틸리티에서 fonts를 클릭하여 선택한 뒤에 복사해야 합니다. 그러지 않으면 엉뚱한 곳에 글꼴이 복사됩니다. yaffey 유틸리티의 도구모음에서 Import를 클릭하고, 해당 글꼴을 불러옵니다. 여기까지 진행된 화면이 그림 35-9입니다.


* 나눔고딕 코딩 글꼴 웹 페이지: http://dev.naver.com/projects/nanumfont


<그림 35-9 나눔 글꼴을 추가한 모습>


이제, 기존 영문 기본 글꼴을 삭제합니다. Roboto-Regular.ttf와 Roboto-Bold.ttf를 클릭하여 선택한 뒤, 도구모음에서 Delete를 클릭합니다.


거의 다 됐네요. 나눔고딕과 나눔고딕볼드의 속성을 편집할 차례입니다. 한 번에 하나씩만 작업할 수 있으니, 먼저 나눔고딕을 선택합니다.


1. 도구모음에서 Properties를 클릭합니다.

2. 우선 이름부터 Roboto-Regular.ttf로 변경합니다.

3. Permissions 영역에서 Execute 속성을 전부 해제합니다. User, Group, All에서 Execute 속성에 체크 표시가 없어야 합니다.

4. OK를 클릭합니다.


이제 나눔고딕볼드를 작업할 차례입니다. 나눔고딕볼드를 선택합니다.


1. 도구모음에서 Properties를 클릭합니다.

2. 우선 이름부터 Roboto-Bold.ttf로 변경합니다.

3. Permissions 영역에서 Execute 속성을 전부 해제합니다. User, Group, All에서 Execute 속성에 체크 표시가 없어야 합니다.

4. OK를 클릭합니다.


이제 저장만 하면 완료됩니다.


1. 도구모음에서 Save As를 클릭합니다.

2. systen.img를 입력합니다.

3. 저장 버튼을 클릭합니다. OK를 클릭하여 요약 창을 닫습니다.

4. 저장된 systen.img 파일을 sdk\system-images\android-18\armeabi-v7a 폴더를 찾아 복사합니다. 덮어써야겠죠?


앞에서 만든 샘플 애플리케이션을 테스트할 차례입니다. 이클립스를 실행하고 Window 메뉴에서 Android Virtual Device Manager를 실행합니다. 기존 에뮬레이터는 과감히 삭제하고, 새로 에뮬레이터를 만듭니다. 그림 35-10은 한글이 올바로 표시된 안드로이드 애플리케이션의 모습니다. 그림 35-3과 비교가 되시나요? 에뮬레이터의 언어도 그림 35-11처럼 한국어로 변경할 수 있습니다. 다시 샘플 애플리케이션을 실행하면 그림 35-12처럼 “안녕하세요.”가 올바로 출력되는 것을 확인할 수 있습니다.


<그림 35-10 나눔 글꼴을 추가한 뒤 에뮬레이터에서 샘플 애플리케이션을 실행한 결과>


<그림 35-11 언어 설정>


<그림 35-12 언어 설정에서 한국어로 변경한 뒤 샘플 애플리케이션을 실행한 결과>


여기서 잠깐! 한 가지 이상한 점을 발견하셨나요? 맞습니다. 영문 글꼴이 별로 미려하지 못합니다. 아까 언급했던 Roboto-Regular.ttf와 Roboto-Bold.ttf 파일이 없다보니 좀 웃긴 모양새가 됐습니다. 마지막으로, 시스템 이미지를 변경한 뒤 처음으로 에뮬레이터가 생성될 때는 대단히 느릴 수 있습니다.


오늘은 여기까지입니다. 긴 글 읽어주셔서 고맙습니다. 여기서 말씀 드린 내용은 어디까지나 임시방편이라는 점에 유의하시고, 10월에 출간될 제이펍의 안드로이드 책과 함께 안드로이드를 공부하실 때 조금이나마 도움이 되시기를 바랍니다.



저작자 표시 비영리 동일 조건 변경 허락
신고

댓글을 달아 주세요

  1.  댓글주소  수정/삭제  댓글쓰기 초보 2013.08.30 13:53 신고

    좋은 팁 감사합니다.
    순수 java 로만 개발할 경우 mips 에뮬레이터를 만들어 쓰면 따로 작업하지 않아도 한글이 잘 나옵니다.

    그런데 나눔고딕 폰트 이름을 꼭 바꾸지 않아도 되던데요,
    저는 폰트 파일을 그냥 넣었는데 잘 됩니다.

    •  댓글주소  수정/삭제 배장열 2013.08.30 19:19 신고

      말씀해 주셔서 감사합니다.
      젤리 빈 4.2.2까지는 MIPS 이미지를 선택하면 한글을 출력할 수 있었습니다. 말씀하신 대로 약간의 제약이 따르기는 하지만 그런대로 테스트하기에는 괜찮았습니다. 다만, 젤리 빈 4.3버전에는 아직 MIPS 이미지가 제공되지 않고 있습니다. 그림 35-2에서 알 수 있 듯 인텔 프로세서를 위한 이미지만 제공되고 있습니다.
      나눔 글꼴을 넣어 시스템 이미지를 만드는 방법이 생각만큼 잘 안 됩니다. 쉽게 되기도 하고, 어쩔 때는 오류가 나서 가상 장치가 만들어지지 않기도 합니다. 잘 되신다니 다행입니다. 고맙습니다.

  2.  댓글주소  수정/삭제  댓글쓰기 배장열 2013.09.04 09:23 신고

    두어 가지 내용을 덧붙이겠습니다.

    제가 처음 테스트했을 때는 나눔글꼴을 추가한 뒤 심볼릭 링크를 만들지 않으면 가상 장치가 만들어지지 않았습니다. 끝도 없이 오류를 내었습니다. 본문에서 사용한 윈도용 yaffs 처리 유틸리티, yaffey는 심볼릭 링크를 만드는 기능이 없어, 부득이 하게 디폴트 영문 글꼴을 삭제하고 그 자리에 대신 나눔글꼴을 집어넣은 것입니다. 물론 리눅스에서 작업한다면야 얼마든지 심볼릭 링크를 만들 수 있으니 그런 글꼴 삭제 과정은 필요치 않을 것입니다.

    그런데, 몇 분이 윈도에서 글꼴만 추가해도 올바로 한글이 출력된다는 사실을 말씀해 주셨습니다. 저도 테스트해보니 처음과는 달리 올바로 동작했습니다. 하지만, 나눔글꼴 대신 다른 글꼴, 가령 다음의 고딕 글꼴을 추가하니 이번에도 오류만 쏟아냈습니다. 참 웃기는 구글이죠?

    학업이나 업무에 위 내용을 적용하시려는 분께 말씀드립니다.
    처음에는 나눔글꼴을 파일명만 영문으로 바꿔 그대로 시스템 이미지 파일에 추가하세요. yaffey 유틸리티가 한글 파일명을 올바로 표시하지 못하는 문제가 있으므로 나눔글꼴의 파일명을 영문으로 바꿔주셔야 합니다.

    그렇게 해서 안 되시면, 위에서 말씀드린 과정을 따라 하시길 바랍니다.

    말씀해 주신 분들께 감사의 말씀 드립니다.

  3.  댓글주소  수정/삭제  댓글쓰기 2013.10.16 19:51

    비밀댓글입니다

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2013.10.25 18:16 신고

      안녕하세요? 댓글 내용을 이제 확인했네요. 죄송합니다.
      어느 부분에서 저장이 안 되는지 구체적으로 말씀해주시면 확인해서 안내해드리도록 하겠습니다.

  4.  댓글주소  수정/삭제  댓글쓰기 Lim 2014.04.05 02:51 신고

    incomplete page found at end of file 이런게 system.img 열때 뜨네요.. ㅠㅠ
    어떻게 해야할지 모르겠습니다.

    •  댓글주소  수정/삭제 배장열 2014.04.06 09:27 신고

      안녕하세요.
      yaffey에서 system.img 파일을 열 때 오류가 난다는 말씀이시죠?
      system.img 파일이 손상된 것 같습니다.
      안드로이드 SDK를 다시 다운로드해서 해보시고, 그래도 안 된다면
      어떤 상황인지, 좀 더 구체적으로 말씀해 주시기 바랍니다.
      고맙습니다.

  5.  댓글주소  수정/삭제  댓글쓰기 laid 2014.06.24 19:03 신고

    위에 나열된 것을 전부 다하고 Save As를 누른 후에 system.img로 저장을 할려하면
    (저장장소는 바탕화면입니다.)

    "Error saving image: C:/Users/삼성고1/Desktop/system.img"

    라고 뜨면서 저장이 안됩니다. 다른곳으로 경로를 바꿔도 저장이 되지 않네요...
    어떻게 해야 하나요??

    •  댓글주소  수정/삭제 배장열 2014.06.25 16:49 신고

      안녕하세요.
      우선, 젤리빈으로 공부하셔야 하는 이유가 있나요? 그러시다면 오류가 나는 상황을 구체적으로 말씀해 주시기 바랍니다. 저장하기 전까지 어떤 문제가 있었을 텐데, 결과만 알려주시면 직접 옆에서 보지 않는 이상 저도 모릅니다. ^^ 단순히 저장에 문제가 있다면 system.img 파일이 손상되었을 수도 있습니다.

      윈도우 파일시스템 안에서 yaffey 유틸리티로 리눅스 파일시스템을 다루는 것 자체가 문제투성이입니다. 같은 과정으로도 되다가 안 되다가 웃깁니다. 킷캣 버전을 사용할 수 있는 상황이라면 http://jpub.tistory.com/351 글을 참고하시기 바랍니다.

      고맙습니다.

  6.  댓글주소  수정/삭제  댓글쓰기 youhue 2014.08.07 11:30 신고

    안녕하세요. 애뮬레이터에 한글적용이 되지 않아서 검색하고 찾아 여기까지 오게됬습니다.
    제가 모두 같이 적용해본 결과 애뮬레이터 자체가 켜지질 않습니다..
    systen.img 이 아니라 system.img파일을 덧붙이는것 맞지요?
    애뮬레이터를 새로 생성시키고 run as를 시키면 애뮬레이터가 android라는 문구조차 안나오고
    검은 화면만 오랜시간 머물러있네요.. 이럴땐 어떻게 해야하는지요.. ㅠㅠ

    •  댓글주소  수정/삭제 배장열 2014.08.07 13:25 신고

      안녕하세요.
      관심 가져 주셔서 감사합니다.
      yaffey 유틸리티는 문제가 많습니다.
      바로 윗 댓글에 게시한 제 답변을 참고하시기 바랍니다.
      http://jpub.tistory.com/351을 첨고하셔서
      직접 system.img 파일을 수정해 보세요.
      문제가 생기면 그 글에 댓글로 알려주시거나
      화면 캡처 등이 있어야 한다면 제 메일인 justdoit709@gmail.com로
      같이 부탁드립니다.
      고맙습니다.

  7.  댓글주소  수정/삭제  댓글쓰기 Favicon of http://lopicit.tistory.com BlogIcon 로픽 2016.08.24 12:13 신고

    정말 감사합니다. 한글 적용 안되서 애먹고 있었는데 해결했습니다.
    그런데 cpu설정을 mips로 해도 한글이 적용된다고 하는데 저는 mips로 설정을 하면 에뮬레이터가
    안드로이드로고만 뜨고 홈화면으로 넘어가지 않습니다. 혹시 왜그런지 알고계신가요?

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 레몬에이드 2016.08.31 15:54 신고

      안녕하세요. 죄송합니다. 확인이 늦었습니다. 작성자 확인 후 답변 드리겠습니다. 감사합니다.

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 레몬에이드 2016.08.31 16:59 신고

      확인해보니,
      현재 질문 내용으로는 구체적인 내용을 확인할 수가 없으므로 메일로 상황을 자세히 알려주면 답변해 주시겠다고 합니다.

      메일은 justdoit709@지메일닷컴 입니다.
      감사합니다.

  8.  댓글주소  수정/삭제  댓글쓰기 2016.12.10 10:34 신고

    안녕 하세요~이클립스 에뮬레이터가 한글을 인식을 못해서 우연히 찾다가 들려서 해봤습니다.
    노트북으로 이클립스를 구동 중인데..
    window64비트 이고
    이클립스 루나를 사용중이고
    sdk가 api17안드로이드 4.2젤리빈 으로 사용중 입니다.
    위의 파일은 32비트용이라 그런지 시스템 이미지가 문제가 생기면서 안드로이드 에뮬레이터가 진행이 되질 않아서
    다른 방법을 찾던중 avd 설정을 바꿔 구동 시켜서 ddms로 들어가 설정을 바꾸는 방법?을 찾아서 해봤는데
    진행이 되질 않네요ㅜ 다른 방법이 없는지..여쭤 봅니다..

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2016.12.13 14:18 신고

      네. 저희도 좀 알아본 후에 다시 답변드리겠습니다. 조금만 기다려주세요.

    •  댓글주소  수정/삭제 심재철 2016.12.13 15:41 신고

      이클립스에서 Window -> Android SDK Manager를 실행한 후
      필요한 안드로이드 버전에 있는 시스템 이미지(이름 끝에 64가 붙은 것이 64비트 버전임)를
      업데이트 또는 추가 설치한 후 다시 AVD를 생성해 보시기 바랍니다.

      <<< 그리고 이제는 이클립스용 안드로이드 ADT가 지원되지 않습니다.>>>
      그러므로 이클립스 대신 안드로이드 스튜디오를 사용하셔야 합니다.

      아래 링크로 접속하신 후 "ANDROID STUDIO 다운로드" 버튼을 누르면 되며,
      다운로드된 exe 파일을 실행하면 설치가 됩니다.

      https://developer.android.com/studio/index.html

      그리고 안드로이드 스튜디오 사용법에 관한 자세한 내용은
      제이펍 출판사의 "안드로이드 스튜디오 & 프로그래밍" 책에 잘 설명되어 있습니다.
      링크는 다음과 같습니다.

      http://www.yes24.com/24/goods/27957959?scode=029

      좋은 하루 되세요.



티스토리 툴바