RRO 또는 runtime resource overlay

개념

안드로이드 앱 패키지의 주요 구성 요소는 코드, 리소스라 할 수 있습니다. 이 중 리소스에는 색상, 문자열 같은 단순 값부터, 그림 (drawable), 그리고 (XML) 레이아웃 등이 들어있는데요.

(런타임) 리소스 오버레이는 앱 패키지를 불러올 때, 원래 앱의 리소스를 사용자가 설치한 오버레이 패키지의 리소스로 덮어씌워주는 도구입니다.

소니 모바일 팀에서 개발했고 6.0 - 7.0 시절에 AOSP에 기부했다고 하고요, 8.0부터 본격적으로 도입이 된 것 같아요. 삼성, LG를 포함해서 많은 제조사들이 이 리소스 오버레이 기능을 바탕으로, 휴대폰 테마 기능을 개발하여 적용했습니다. substratum 테마 앱도 리소스 오버레이를 기반으로 작동하죠.

한계

  • 소스 코드를 고칠 수 없습니다. 당연하죠.
  • 새 버전이 나올 때마다 변경 사항이 있는지 보고 반영해야 합니다. 못할 짓이죠.
  • 앱 오류, 또는 시스템 전체에 오류를 일으킬 수 있습니다
    • 단순한 값 변경도 경우에 따라 코드에서 부작용을 일으킬 수 있습니다
    • 레이아웃처럼, 코드에서 리소스 내부 구성요소에 (예. 레이아웃 내 뷰) ID로 접근한다던지 하면, 없어진 요소를 프로그램에서 찾지 못하고 NullPointerException 예외를 일으킬 수 있는 등 예기치 못할 위험이 있습니다

안드로이드 9.0 파이 제한 사항 및 우회 방안

다만 안드로이드 9.0부터는 구글이 보안 개선을 이유로 제조사 서명이 되지 않은 리소스 오버레이는 설치할 수 없도록 제한했습니다. 보안 위협 시나리오가 어떤 것이 있을지..., 소설을 써 보겠습니다만 실현 가능성이 없어 보이네요.

  • 사악한 DLC 앱: 스토어에는 검수하기에 멀쩡해 보이는 앱을 게시하고, 사용자를 속여 리소스 오버레이가 설치되면 오버레이에 정의된 플래그 값을 읽어서 숨겨진 사악한 기능이 활성화되는 앱. 구글 검수를 퍽이나 통과할 수 있겠죠?
  • 앱 기능 망치기: 특정 상수값을 고쳐서 앱 동작을 방해한 뒤, 기밀 정보를 빼돌리기. 참 쉽겠죠?

삼성 기기의 경우 S9/노트9 빼고는 설치 제한이 걸린 것으로 보입니다. 만, 플레이스토어에 파이 OS용 리소스 오버레이 기반 테마 제작 앱이 있습니다. 대단합니다. *Synergy
LG 기기는 사용자 테마를 만들고 그 안에 직접 만든 리소스 오버레이를 넣어둘 수 있습니다. 안 막히기를 바랍니다.

제작 절차

  • 수정하려는 앱 및 시스템 프레임워크 파일을 획득
  • 역컴파일 툴 (JADX 추천) 통해 코드 및 리소스 분석
  • 리소스 오버레이 프로젝트 폴더 준비: AndroidManifest.xml 파일, res 폴더
  • 수정할 리소스 만들어 넣기
  • aapt 툴 통해 프로젝트를 APK 파일로 생성, 서명 후 기기에 설치

 

(2)편에서 계속...

국내 스마트폰은 플레이스토어, 제조사 스토어에서 원하는 폰트를 유·무료로 구입해서 쓸 수 있습니다.

아이폰에는 탈옥 않으면 절대 바랄 수 없고, 외산폰은 루트 권한 있어야 하는 것 같은데...

그런데 스토어에 없는 (수정도 허용되는 라이선스 또는 개인 소장) 폰트를 쓰고 싶으면.. 폰트 패키지를 직접 만들어 써야겠죠. 국내 두 제조사는 각기 다른 패키지 형식을 쓰는데요.

"플립폰트"를 쓰는 듯한 (아직 그대로죠?) 삼성폰은 방법이 여러가지 마련되어 있죠.
예를 들어 파이 OS 즈음부터 (S9/노트9 빼고) 사용자 폰트 추가가 차단된 듯 하나, 테마 무료체험 기능을 오용하는 꼼수가 마련되어 있습니다. https://tali.tistory.com/378
역시 사용자 많고 봐야 합니다. 저도 끼워주세요... 곧 아이폰11 나오니 기대하겠습니다.. 지금도 잘 팔리니 그런 일은 없을 것..
지금은 없는... 팬텍도 플립폰트였네요.

 

그럼 LG는...? "HY폰트"라는데 한양에서 만든 폰트 시스템인가봐요.
문제는 이 집은 해독하기 어려운 폰트 패키지 형식을 쓰는 바람에 사용자가 비공식 폰트 패키지를 만들기가 쉽지 않습니다. 조금 더 자세히는 패키지 내의 "/asset/font.dat" 바이너리 파일이 도대체 무슨 형식인지 알 수가 없습니다.

HY폰트 형식이 나온지가 매우 오래되었기 때문에 비공식 패키지 제작법이 나올만 한데, 저는 아직까지는 찾지 못했습니다. 미국, 아니면 베트남 커뮤니티에서 뚫어줄 만 한데, 굳이 고생할 유인이 없는 듯 합니다. 폰트 판매자 입장에서는 다행이지요.

 

방법이 완전히 없는 건 아니라고 합니다. 다른 폰트 패키지를 하나 받아서, 패키지 내의 폰트 파일을 원하는 폰트로 바꿔치기하는 방식이 있다고 하네요. "font.dat"를 수정하지 않겠다는 의도가 되겠습니다. 이미 수 년 된 방법입니다.

폰트 파일만 교체
폰트 수정 (FontCreator 사용) + 파일 교체

  1. 쓰지는 않을 폰트 패키지를 하나 다운로드하거나 구입하고, PC로 추출해 둡니다.
  2. 패키지를 반디집 같은 압축 프로그램으로 열어서, 폰트 이름, 폰트 파일 이름을 확인합니다.
  3. (필수 아님?) 사용하려는 폰트를 FontForge(무료!) 같은 프로그램으로 열어서 폰트 이름을 패키지의 것으로 바꿉니다.
  4. 사용하려는 폰트 파일 이름을 패키지의 폰트 파일 이름으로 바꾼 뒤, 패키지에 넣어줍시다.
  5. 패키지를 다시 서명한 후, 기기에 설치하고 적용합시다. 기기에서 폰트 이름은 패키지의 것으로 표시되겠습니다.

...뭔가 자괴감 드는 방법이죠.. 그냥 스토어에 있는 폰트 씁시다.

 

더버지표 11분 요약

총평

  • 오늘도 약장수 위엄 파노스 파나이

  • 새 "서피스 프로" 제품이 또다시 재탕이라 크게 실망했습니다. 벌써 4년째.

  • 신박한 제품들이 나오기는 했으나 실용성이 의심됩니다

    • 네오, 듀오: 만듦새 좋아보이지만, "응, 갤럭시 폴드.."
    • 프로 X: ARM 윈도, 이번에는? 전문 리뷰 사이트 평가를 보아야겠습니다
    • 서피스 이어버드: 원반...
  • AMD 가즈아!!!

  • 수리·교체 용이성 자랑에 빵끗

서피스 프로

  • 인텔 10세대 달고, USB-C 달고, 끝...
  • 화면 크기, 베젤, 서피스 커넥터 모두 그대로...

  • 물론 썬더볼트 없음. 자꾸 이럴거면 이름에서 "프로" 뺍시다.

프로 X 밀어주려고 MS가 올해도 서피스프로 사골을 고았습니다. 매우 실망입니다. 하드웨어 발표회에 오피스 펜 기능 자랑은 왠 말인가요.

다만 삼성 갤럭시 연동, 특히 통화 연동은 좋습니다. 타사 안드로이드 기기는 당분간 안 될 것 같지만 언젠간 되겠죠?

서피스 프로 X

 

오늘의 주인공

서피스 RT 말아먹은 이후, 오랜만에 돌아온 ARM 태블릿이네요. 자체퀄컴과 함께 설계했고, AI 연산 성능 좋다는 SQ1 칩셋을 탑재했다는데, 퀄컴 8cx 칩에서 무엇이 달라졌는지 전문 리뷰 사이트를 통해 만나봐야겠습니다. 높은 AI 연산 성능으로 무엇을 하려는 건지도요. TODO

ARM용 윈도는 x86 호환을 위해 BT(Binary Translation) 기술을 쓴다는데요, 잘은 모르지만 성능 저하가 있어왔고 이번 모델에서도 여전하리라 예상됩니다. 지난달에 스냅드래곤 8cx 칩셋이 MS오피스 (x86), MS 엣지 브라우저 성능 비교에서 인텔 i5-8250U를 근소한 차이지만 이겼다는 전문 리뷰 사이트 기사가 있었는데요. 여전히 x64 호환은 불가하고, SSE2 같은 명령 호환이 안 될 것이기 때문에 큰 기대가 안 됩니다. 과연 이번에는 다를까요? 오버헤드 적은 호환 기술이 적용되었을까요.

아이패드 프로 3세대 12.9와 같은 가격($999)인데, 펜, 키보드 모두 별매일테니 가격 메리트는 없는 것 같습니다. 딱 하나, RAM이 8GB에서 시작하는 건 장점일 수도 있겠습니다.

* 191105: 엔가젯 리뷰가 떴네요:

https://www.engadget.com/2019/11/05/microsoft-surface-pro-x-review-price-specs-availability-windows-arm-lte/

서피스 랩탑

지난 제품에서 알칸타라 천으로 키보드 부분을 싹 덮어놓은 결과 iFixit 수리용이성 소세지빵점을 받은 치욕을 엄중히 받아들였는지, 올해는 분해가 됩니다 (아래 사진 참조). 천 대신 금속으로 (서피스인데 플라스틱은 아니겠죠) 마감하니 더 예쁘네요. 서피스 패밀리에 기대하는 각진 고급스러움이 묻어납니다.

감성가격 생각하면 (상대적으로..) 값싸고 좋은 국내 LG 그램(흰둥이 감성), 삼성 노트북 펜(얘도 펜 됨) 라인이 좋긴 한데요. 디스플레이는 해상도, 3:2 비율로 서피스가 좋죠.

협력사 대표한테도 약파는 서피스 수장

https://www.youtube.com/watch?v=dmaioTs0NH8&t=724s

인텔 외길이었던 MS 서피스에도 AMD CPU가 달려나오는 날이 오네요. 발표회장에 AMD CEO 리사 수 박사도 와 있었대요. 15인치 모델에 (MS에서 커스텀 주문한) AMD 라이젠 APU가 들어간다고 합니다. 배터리 성능은 기대하지 않지만, 그래픽 성능이 외장 GPU 버금갈지가 기대됩니다. TODO

분해 가능, SSD 교환 가능 자랑

그동안 수리 용이성 따위는 엿바꿔먹었던 서피스 시리즈였으나, 이번에는 몇 가지 개선점을 자랑스레 보여주었습니다.

  • 랩탑 분해 가능

  • 프로 X 뒷면 우하단 뚜껑 열어서 SSD 교체 가능 (프로는 안 됨)

그런데 프로는?

서피스 네오 (2020년 출시 예정)

2010년대 초반에 컨셉만 유출되고 말던 '쿠리에' 프로토타입이 결국 제품화되었네요. 진짜 화면이 접히는 갤럭시 폴드가 팔리고 있는 시점이라, 중국 ZTE도 만들었던 듀얼 스크린 기기를 이제야 내놓는 건 너무 늦은 건 아닌가 싶지만.. 서피스 시리즈답게 기구 마감은 매우 좋아 보입니다. 경첩 디자인이 깔끔하네요.

ARM CPU를 안 쓰고 인텔 CPU를 썼네요. 아이패드 미니 크기라서, 이 제품이야말로 배터리 성능을 위해 ARM CPU를 써야 할 것 같은데 의외입니다. 듀얼스크린을 쓰기에 ARM CPU 성능이 부족해서 그랬다는 의견이 있더군요. 한 세대 전 CPU를 썼던 서피스 스튜디오 사례를 볼 때, 그냥 개발 기간이 길었기 때문에 그랬을 것 같습니다.
인텔에서 각 잡고 만든 물건이 들어가네요 ㄷㄷ "Foveros" 기술을 통해 빅/리틀 CPU, GPU 코어를 칩 하나에 때려박고, 그 위에 DRAM까지 쌓았대요. 칩 하나에 CPU, (GPU,) 메모리 죄다 때려박은 제품이랍니다. [기글하드웨어의 관련 글](https://gigglehd.com/gg/hard/3996041)
인텔 칩은 올해 연말에 출시된다는데요, 서피스 네오 나오기 전에 다른데서 제품이 나올텐데 과연 ARM의 저전력 명성을 압도할 수 있을지 기대가 됩니다.

프로토타입 기기 구동 모습을 보여주었는데요, 화면 회전 굼뜨고, 키보드 붙일 때 화면 전환 굼뜨고.. 갈 길이 멀어보입니다. 윈도 팀 이제는 제발 일하십시오.

배터리 성능 별로, 윈도+태블릿 여전히 별로, 가격 끔찍할 것이 예상되지만..

펜 되는 고급 다이어리! 가격 착하다면 하나 갖고 싶네요.

서피스 듀오 (2020년 출시 예정)

소문만 무성하던 서피스 폰이 놀랍게도 나왔네요. 더 놀랍게도 안드로이드 OS.

비슷한 컨셉의 ZTE Axon M, LG V50이 생각나지만, 각 잡고 만들어서 훨씬 쓰기 좋아보여요. 물론 펜도 되고요. MS에서 안드로이드용 앱 열심히 만드시더니, 다 계획이 있었네요.

그러나 화면 닫은 채로 통화 불가한 모양새. 바깥에는 카메라가 없는 것 같고요. 따라서 화면 접고 펴다 지문 많이 묻을 것 같아요.

서피스 이어버드

저 디자인을 누가 소화할 수 있을까요.

 

 

 

+ Recent posts