기기에서 직접 추출 요즘 파일 탐색기에 다들 앱 추출 기능이 있죠. 아니면 Send Anywhere 앱도 있고요.
APK 공유 사이트 이용 저는 APKMirror나 APKPure를 이용하는데요, APKPure 사이트는 왜인지 모르게 중국 풍이 느껴지기는 하지만 한국 개발사 포함해서 각종 앱이 다 있습니다. 혹 변조되었을지 두려운 마음 조금 있지만, 디지털 서명을 믿을 수밖에요. (서명 v1은 뚫릴 수 있다던데... 설마...)
한편 휴대폰 UI를 바꾸고 싶다면,
시스템 프레임워크 파일 획득: 보통 아래 파일을 획득하면 되는 것 같습니다.
/system/framework/framework-res.apk : 안드로이드 OS 공통
/system/priv-apps/SystemUI.apk : 상태바, 내비게이션 버튼 등 시스템 요소 그리는 애
또한 /system/framework 디렉토리에 제조사별 커스텀 리소스도 있으니 함께 확보해야 합니다.
그 외에 프레임워크 소스 파일, Settings.apk도 확보하셔서 소스를 들여다보면 이 리소스가 어디에 쓰이는지 아는 데 도움이 됩니다. 문제는 안드로이드 OS 5.0부터 ART를 도입하고, 그 후로 갖가지 최적화가 적용되면서 소스 파일이 점점 숨어들어갔습니다. 디컴파일해서 소스 들여다보기가 쉽지는 않습니다.
2단계: 역컴파일 툴 통해 코드 및 리소스 분석
최근 저는 JADX 즐겨 쓰고 있습니다. 별다른 복잡한 조작 없이 달빅 바이트코드를 자바 코드로 바꿔 보여주고, 전체 코드 검색 가능한 점이 좋습니다. 리소스 대상으로는 키워드 검색 안 되는 점은 아쉬워요.
재미있는 기믹이지만 저한테 매우 유용하지는 않습니다. 놀러갈 때 쓸만한데, 놀러갈 일이 별로 없어서........ 또, 스피커 크기 한계상 소리가 압도적이지는 않은 점이 조금 아쉽습니다. 제 휴대폰 (LG G7) 대비 큰 차이가 느껴지지는 않았습니다.
2in1 하느라 생긴 가장 큰 문제는.. 스피커를 장착하느라 충전 케이스가 커진 점입니다. 주머니에 잘 안 들어가고, 넣으면 불룩해서 불편하고요. 에어팟과 비교하기는 에어팟 케이스가 워낙 작아서 민망하고, 다른 메이저 제품과 비교해서 큼직한 것이 불편합니다.
음질
(iOS 기기 / 안드 8.0 이상에서 지원되는) AAC 코덱을 잘 지원하고요, 피아톤표 BA 드라이버 덕분에 막귀로는 동사 유선 이어폰과 구별 안 되는 좋은 음질입니다. 저음 좋고, (커널형 감안해서) 고음 깨끗합니다. 음질에 불만이 없어요.
저는 번들 실리콘 팁은 음질 면에서 별로였고, 알리발 짭 폼팁 쓰니 괜찮았습니다. (TWS용 짧은 폼팁 말고, 일반 폼팁을 썼습니다.) 컴플라이 정품 폼팁 쓰면 더 좋을 거에요.
퀄컴 칩셋이 아니라 그런지 Apt-X 지원이 안 되어서 아쉬운 점은 있습니다. AAC로도 충분한 것 같지만요.
편리한 이어윙
유닛에 귀에서 빠지지 말라고 만든 실리콘 "이어윙"이 있습니다. 나름 인체공학적인 보스 이어폰에 달린 것과 비슷한데요, "이갑개정"(방금 검색함)에 이어윙을 걸쳐놓는 식입니다. 별 것 아니어 보이지만 얘 덕분에 귀에서 안 빠집니다. 배터리 때문인지 유닛이 나름 큰데도, 이어윙 덕분인지 무게로 인한 불편함이 없기도 해요.
편의성에서 아쉬운 점
출시 후 업데이트를 받았지만, 그래도 지하철에서 끊기기는 끊깁니다. (이후에 업데이트가 또 있었는지 모르겠네요.)
충전 없이 케이스에 오래 놓아두면 (4-5일) 방전됩니다. 관리를 잘 못 한 것인지 모르겠네요.
에어팟처럼 멀티포인트 연결이 지원되지 않아서, 다른 기기에 연결하려면 먼저 이전 기기와의 연결을 끊어야 합니다.
이어폰 유닛 위의 볼륨 조절 버튼이 대충 누르면 잘 안 눌립니다. 적절한 방법으로 누르면 되지만요. 뽑기 실패일 수도 있겠네요.
험하게 쓰니 흰둥이 케이스 도색이 점점 벗겨지네요 ㅠ.ㅠ
무선 충전 안 됨...
마지막으로
본 제품이 출시되자마자...
다음 세대 TWS 칩셋을 장착한 제품이 우수수 쏟아져나왔고
저가형에서는 QCY T1
고가형에서는 애플 에어팟 및 소니, 젠하이저 등에서 만든 제품들
시장 점유율을 위해 S10 사은품 정책을 들고나온 삼성 갤럭시 버즈
쏟아져나온 탓에 가격 우위를 점하기 힘들어 보였습니다. 고객을 끌어들이기에는 이 제품의 특징인 스피커 기믹, 그리고 피아톤표 BA 드라이버가 타사 대비 압도적이지는 않으니까요.
다음 제품에서는 피아톤의 자랑 (가성비) 노이즈 캔슬링을 밀면 좋겠으나, 노캔 TWS 시장을 싹 쓸어갈 에어팟 프로, 그리고 제품 가격을 생각하면 더 가까운 적수일 아마존 에코 버즈가 나왔네요. 문외한이 보기에도 쉽지 않아 보입니다.
안드로이드 앱 패키지의 주요 구성 요소는 코드, 리소스라 할 수 있습니다. 이 중 리소스에는 색상, 문자열 같은 단순 값부터, 그림 (drawable), 그리고 (XML) 레이아웃 등이 들어있는데요.
(런타임) 리소스 오버레이는 앱 패키지를 불러올 때, 원래 앱의 리소스를 사용자가 설치한 오버레이 패키지의 리소스로 덮어씌워주는 도구입니다.
소니 모바일 팀에서 개발했고 6.0 - 7.0 시절에 AOSP에 기부했다고 하고요, 8.0부터 본격적으로 도입이 된 것 같아요. 삼성, LG를 포함해서 많은 제조사들이 이 리소스 오버레이 기능을 바탕으로, 휴대폰 테마 기능을 개발하여 적용했습니다. substratum 테마 앱도 리소스 오버레이를 기반으로 작동하죠.
한계
소스 코드를 고칠 수 없습니다. 당연하죠.
새 버전이 나올 때마다 변경 사항이 있는지 보고 반영해야 합니다. 못할 짓이죠.
앱 오류, 또는 시스템 전체에 오류를 일으킬 수 있습니다
단순한 값 변경도 경우에 따라 코드에서 부작용을 일으킬 수 있습니다
레이아웃처럼, 코드에서 리소스 내부 구성요소에 (예. 레이아웃 내 뷰) ID로 접근한다던지 하면, 없어진 요소를 프로그램에서 찾지 못하고 NullPointerException 예외를 일으킬 수 있는 등 예기치 못할 위험이 있습니다
Android 10부터는 `assets/`를 덮어쓸 수 없도록 개선(?)되었습니다. 'assets' 디렉토리에 실행가능한 바이너리 등을 두는 등 (아니 딴 데다 둬야지 왜 거기다가) 동작이 변조될 위험이 있는 앱이 있다고 합니다. 따라서 리소스 오버레이가 'assets' 디렉토리를 수정하는 일이 나쁜 목적으로 쓰일 수 있으므로 기능을 삭제했다고 하네요.
다만 안드로이드 9.0부터는 구글이 보안 개선을 이유로 제조사 서명이 되지 않은 리소스 오버레이는 설치할 수 없도록 제한했습니다. 보안 위협 시나리오가 어떤 것이 있을지..., 소설을 써 보겠습니다만 실현 가능성이 없어 보이네요.
사악한 DLC 앱: 스토어에는 검수하기에 멀쩡해 보이는 앱을 게시하고, 사용자를 속여 리소스 오버레이가 설치되면 오버레이에 정의된 플래그 값을 읽어서 숨겨진 사악한 기능이 활성화되는 앱. 구글 검수를 퍽이나 통과할 수 있겠죠?
앱 기능 망치기: 특정 상수값을 고쳐서 앱 동작을 방해한 뒤, 기밀 정보를 빼돌리기. 참 쉽겠죠?
삼성 기기의 경우 S9/노트9 빼고는 설치 제한이 걸린 것으로 보입니다. 만, 플레이스토어에 파이 OS용 리소스 오버레이 기반 테마 제작 앱이 있습니다. *Synergy LG 기기는 사용자 테마를 만들고 그 안에 직접 만든 리소스 오버레이를 넣어둘 수 있습니다. 언젠가는 막히겠지만 안 막히기를 바랍니다.
제작 절차
수정하려는 앱 및 시스템 프레임워크 파일을 획득
역컴파일 툴 (JADX 추천) 통해 코드 및 리소스 분석
리소스 오버레이 프로젝트 폴더 준비: AndroidManifest.xml 파일, res 폴더
국내 스마트폰은 플레이스토어, 제조사 스토어에서 원하는 폰트를 유·무료로 구입해서 쓸 수 있습니다.
아이폰에는 탈옥 않으면 절대 바랄 수 없고, 외산폰은 루트 권한 있어야 하는 것 같은데...
그런데 스토어에 없는 (수정도 허용되는 라이선스 또는 개인 소장) 폰트를 쓰고 싶으면.. 폰트 패키지를 직접 만들어 써야겠죠. 국내 두 제조사는 각기 다른 패키지 형식을 쓰는데요.
"플립폰트"를 쓰는 듯한 (아직 그대로죠?) 삼성폰은 방법이 여러가지 마련되어 있죠. 예를 들어 파이 OS 즈음부터 (S9/노트9 빼고) 사용자 폰트 추가가 차단된 듯 하나, 테마 무료체험 기능을 오용하는 꼼수가 마련되어 있습니다. https://tali.kr/378 역시 사용자 많고 봐야 합니다. 저도 끼워주세요... 곧 아이폰11 나오니 기대하겠습니다.. 지금도 잘 팔리니 그런 일은 없을 것.. 지금은 없는... 팬텍도 플립폰트였네요.
그럼 LG는...? "HY폰트"라는데 한양에서 만든 폰트 시스템인가봐요. 문제는 이 집은 해독하기 어려운 폰트 패키지 형식을 쓰는 바람에 사용자가 비공식 폰트 패키지를 만들기가 쉽지 않습니다. 조금 더 자세히는 패키지 내의 "/asset/font.dat" 바이너리 파일이 도대체 무슨 형식인지 알 수가 없습니다.
HY폰트 형식이 나온지가 매우 오래되었기 때문에 비공식 패키지 제작법이 나올만 한데, 저는 아직까지는 찾지 못했습니다. 미국, 아니면 베트남 커뮤니티에서 뚫어줄 만 한데, 굳이 고생할 유인이 없는 듯 합니다. 폰트 판매자 입장에서는 다행이지요.
프로 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에서 시작하는 건 장점일 수도 있겠습니다.
지난 제품에서 알칸타라 천으로 키보드 부분을 싹 덮어놓은 결과 iFixit 수리용이성 소세지빵점을 받은 치욕을 엄중히 받아들였는지, 올해는 분해가 됩니다 (아래 사진 참조). 천 대신 금속으로 (서피스인데 플라스틱은 아니겠죠) 마감하니 더 예쁘네요. 서피스 패밀리에 기대하는 각진 고급스러움이 묻어납니다.
감성가격 생각하면 (상대적으로..) 값싸고 좋은 국내 LG 그램(흰둥이 감성), 삼성 노트북 펜(얘도 펜 됨) 라인이 좋긴 한데요. 디스플레이는 해상도, 3:2 비율로 서피스가 좋죠.
인텔 외길이었던 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에서 안드로이드용 앱 열심히 만드시더니, 다 계획이 있었네요.
그러나 화면 닫은 채로 통화 불가한 모양새. 바깥에는 카메라가 없는 것 같고요. 따라서 화면 접고 펴다 지문 많이 묻을 것 같아요.
아키텍처 레벨에서(SystemC 같은 프로그래밍 언어 사용), 바로 RTL 레벨 로직을 만들어내는(합성해내는) 기법입니다. ...그냥 위키백과 찾아보세요.
Verilog/VHDL 같은 하드웨어 프로그래밍 언어를 직접 사용해서 행동 레벨, RTL 레벨 디자인을 하려면 관련 지식이 좀 많이 필요하죠. 그 대신 C/C++/SystemC 같은 보다 상위 레벨 언어로 하드웨어 동작을 지시할 수 있다면, 꼭 하드웨어 엔지니어가 아니라 소프트웨어 개발자도 구현하려는 연산을 해당 연산에 최적화된 하드웨어로 만들어낼 수 있겠습니다. 물론 약간의 지식이 필요하죠. 🤔
경쟁 상대
Xilinx Vivado HLS
Xilinx사 FPGA 전용입니다...
Mentor Catapult
나름 제일 잘 나가는 듯. 하→지↗만→♬, (저에게) 없↘죠→↗♬.
Synopsys Synplify
알못이지만 아무튼 못 들어봤습니다.
왜 써봤냐면
Cadence에서 학교에 Stratus 등 몇 가지 툴 라이선스를 무상 제공한다더군요. 홍보 목적인가봐요. 그래서...
설치
공식 지원 환경은 레드햇 계열 RHEL, SuSE이지만, Ubuntu 18.04에 설치했습니다.
툴 돌아가는 동안 계속 미지원 환경이라고는 하지만, 동작은 합니다.
필요한 필수 패키지들 미리 깔아두시고 (build-essential, csh, ksh, ...)
Cadence 자체 설치 도구(InstallScape) 및 온라인 계정이 있으면 그냥 거기서 받아다 설치하면 되나,
계정 발급이 아직 안 되었기 때문에 다른 경로로 설치 프로그램을 다운받았습니다.
tar 압축파일이니, 압축 해제해주고: $ tar xf <filename>
InstallScape GUI 띄워서 설치해도 되고, 다음 배치 명령어를 써도 됩니다: $ sudo <path_installscape>/bin/iscape.sh -batch majorAction=InstallFromArchive archiveDirectory=<path_installer> install_directory=<path_destination>
다음으로 환경변수 설정이 필요합니다
LM_LICENSE_FILE 변수에 라이선스 서버 주소를 덧붙입니다.
PATH에 툴이 설치된 위치를 덧붙입니다: <path_destination>/tools.lnx86/bin
그리고, HOST 변수를 만들고 호스트명을 값으로 설정했습니다: export HOST=$(hostname)
레드햇을 잘 모르겠지만, 툴 돌아갈 때 HOST 변수 값이 없다면서 오류를 일으키더군요. 그래서...
RTL 시뮬레이션을 위해 Cadence Xcelium 또는 Synopsys VCS 등이 설치되어 있어야 합니다. 그건 잘 하시리라 믿습니다.
실행
명령줄 툴도 있는 것 같지만, stratus_ide 하면 실행됩니다.
Qt4로 만들어서 보기가 좋네요.
도움말이 충실해 보이지만, 읽지는 않았습니다.
툴 내에 튜토리얼이 충실히 갖춰져 있으나, 코드에 대소문자 오류 있는 예제가 하나 있었고 만든 뒤로 관리를 그리 열심히 하지는 않은 것 같은 느낌적인 느낌이 듭니다. 뒤로 갈수록 점점 만들기 귀찮음이 눈에 보이는 듯 했습니다.
의견
Xilinx 툴은 Xilinx사 FPGA 전용이고, Mentor 툴은 수중에 없으니... 쓸 수 있는 건 요것 뿐인데
일단 당장 어디다 쓸 지 모르겠네요. 이 글 보는 분 없으시겠지만, 쓸 데가 있길 빌어주십시오. 감사합니다.
아래 예시는 모든 GPU에 대해 allow_mem_growth 설정을 먹인 뒤, 두 번째 GPU(와 CPU)만 쓰도록 하는 코드 조각입니다:
# set GPU devices not to allocate all memories
gpu_devs = tf.config.experimental.list_physical_devices('GPU')
[tf.config.experimental.set_memory_growth(i, enable=True) for i in gpu_devs]
# find CPU device
cpu_devs = tf.config.experimental.list_physical_devices('CPU')
# explicitly set devices to be used
tf.config.experimental.set_visible_devices([*cpu_devs, gpu_devs[1]])
가상 디바이스를 만들 수도 있나 보던데, 아직 _메모리 상한선을 명시_해야 작동해서 안 쓰기로 했습니다.