adb push DroidSans.ttf /storage/emulated/legacy/

adb push DroidSans-Bold.ttf /storage/emulated/legacy/


mount -o rw,remount /system

cp /storage/emulated/legacy/DroidSans.ttf .

cp /storage/emulated/legacy/DroidSans-Bold.ttf .

chmod 644 *



기본적인 사항이야 모두 잘 아실테니(정성이 부족해서 이런 것이 아닙니다. 절대로~) 텍스트로 간단히 정리하겠습니다.


1. 원인 - 왜 폰트만 바꾸었는데 벽돌이 될까? 심지어 권한도 제대로 주었는데...


일반과 볼드 2가지를 변경하는 통상의 상황에 있어서 진저브레드까지는 사용하고자 하는 폰트의 이름을 /system/fonts의 DroidSans.ttf, DroidSans-Bold.ttf 들로 이름을 변경하여 오바리이트하고 퍼미션 644를 지정하면 간단히 끝났지만 ICS 이상부터는 이러한 방법이 통하지 않기 때문입니다. 빌드에 따라 달라질 수 있겠지만 ICS와 젤리빈은 DroidSans.ttf, DroidSans-Bold.ttf들은 실제의 파일이 아닌 시스템 디폴트 폰트인 Rotobo-Regular.ttf, Roboto-Bold.ttf 들의 심볼릭 링크이기 때문에 해당 파일들을 변경해주어야만 합니다. 단 이렇게만 되면 간단한데 Roboto-Bold.ttf에서 문제가 발생합니다. Roboto-Bold.ttf의 경우 본래의 Roboto-Bold.ttf를 폰트 에디터 프로그램(보통 Font Creator Pro라는 프로그램을 이용하더군요)을 이용하여 컨테이너는 놔둔체 내부의 폰트를 사용하고자 하는 폰트로 교체해야 하기 때문입니다(왜 이래야 하는지는 묻지 마세요~ 저란 사람 모양새라던가 아름다움이라던가 등과 관계된 일들은 기피하는 성향을 가지고 있기 때문에...) 즉 로고에서 반복되는 반벽돌의 원인은 이 Roboto-Bold.ttf입니다.


2. 사후 해결 - 벽돌이 되어버렸다?! 사후 조치의 방법은...


가장 간단한 방법은 복구 모드를 통해 펌웨어를 새로 설치하는 것입니다만, 통상 펌웨어 업데이트는 초기화를 수반하기 때문에 여간 귀찮은 것이 아닙니다. 따라서 폰트만을 복구하는 방법을 정리해봅니다. 단 여기에도 치명적인 단점이 있어서 adb를 이용하므로 반드시 USB 디버깅이 디바이스 상에서 활성화되어 있어야만 합니다. 따라서 USB 디버깅을 평소에도 켜둔다던가 벽돌을 각오해야 할 트윅 전에는 USB 디버깅을 켜는 신중함이 있다던가 등의 사전 안전 활동이 요구됩니다. 


----------------------------------------------------------------------------------------

01) 로고가 출력되고 있다는 것은 일단 adb 접속은 가능하다는 의미입니다.

02) 이하 과정의 편이를 위해 adb와 각 파일들은 한 디렉토리에 있다는 전제로 진행하겠습니다.

03) 설치하고자 하는 정상적인 Roboto-Regular.ttf, Regular-Bold.ttf 등을 준비합니다.

04) 폰트 변경이 있었으니 당연히 루팅은 되어있을 것입니다. 

05) adb shell *쉘 모드로 진입합니다.

06) # su *루트 권한을 획득합니다 (이하 '# '은 쉘 모드상에서의 진행을 의미하는 구분자입니다. 입력하실 필요 없습니다).

07) # mount *마운트 상태를 확인합니다.

08) # mount -rw -o remount /dev/block/mtdblock1 /system *확인된 마운트 정보로 system을 R/W로 마운트합니다.

09) # exit *DOS로 돌아옵니다.

10) adb push Roboto-Regular.ttf /system/fonts *일반 폰트를 디바이스로 카피합니다.

11) adb push Roboto-Bold.ttf /system/fonts *볼드 폰트를 디바이스로 카피합니다.

12) adb shell *쉘 모드로 진입합니다.

13) # cd /system/fonts *system/fonts로 이동합니다.

14) # chmod 644 Roboto-Regular.ttf *일반 폰트의 권한을 644로 지정합니다.

15) # chmod 644 Roboto-Bold.ttf *일반 폰트의 권한을 644로 지정합니다.

16) # reboot *디바이스를 리부팅합니다.

17) 성공적이라면 재부팅된 디바이스를 확인할 수 있습니다.

----------------------------------------------------------------------------------------


주의하실 점은 이 방법 역시 완벽할 수는 없다는 것입니다. 근본적으로 오픈소스인 안드로이드는 빌드를 하는 개발자의 성향에 따라 얼마든지 변경될 수 있기 때문입니다. 또한 바로 이 점 때문에 이 방법으로의 복구에 대한 트러블슈팅은 글을 적는 제가 지원하지 못합니다. 이점 꼭 기억하시고 애초에 벽돌이 되지 않도록 조심스럽게 작업하시기를 권합니다.


그럼 이만 마치겠습니다.


* adb 쉘과 드라이버는 이미 루팅하실 때 부터 가지고 계셨을 것입니다. 대다수의 루팅 툴들이 이들을 포함하고 있습니다. 표준 폰트 역시 기기마다 다를 수 있다고 판단하여 첨부하지 않았으며 공개되어 있는 많은 폰트들 역시 각 수정자를 고려하여 첨부하지 않았습니다. 즉 무책임하게도 필요한 파일들도 검색으로 구하시기를...;;;

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기