2026년 11월 1일 일요일

# 서랍 속 스마트폰 되살리기 — 2017년 폰을 2026년에 다시 쓰기

 # 서랍 속 스마트폰 되살리기 — 2017년 폰을 2026년에 다시 쓰기


> 서랍에 3년쯤 잠들어 있던 안드로이드 폰(Redmi 5 Plus)을 꺼내서

> 초기화하고, 광고 없는 앱으로 정리하고, 유튜브까지 돌아가게 만든 기록입니다.

> 어려운 용어 없이, 그대로 따라 하실 수 있게 순서대로 적었어요.


---


## 이런 분께 해당하는 글입니다


- 집에 안 쓰는 스마트폰이 한 대(또는 그 이상…) 있다

- 아이 방/부엌/서재에 두고 쓸 유튜브·음악 전용 보조기기가 필요하다

- 폰을 버리기 전에 사진이나 연락처가 남아있는지 불안하다


시작하기 전에 한 가지만 약속하겠습니다. 이 방법은 폰을 더 빠르게 만들어주지는 않습니다.

대신 몇 년 더 쓸 수 있게 만들어줍니다. (이유는 마지막에 설명해요.)


---


## 준비물 (3가지)


| 준비물 | 설명 |

|---|---|

| 폰 본체 | 충전이 되는 상태면 OK |

| 데이터 케이블 | ★제일 중요. 충전 전용 케이블은 컴퓨터에서 폰이 안 보입니다 |

| 컴퓨터 | 사진 백업용 (선택이지만 강력 추천) |


---


## STEP 1. 일단 충전 — 오래된 폰은 바로 안 켜지는 게 정상


서랍 속 폰은 배터리가 완전히 방전돼 있을 가능성이 큽니다.


1. 충전기에 꽂고 최소 30분, 여유 있으면 1시간 기다립니다

2. 그다음 전원 버튼을 10초 이상 꾹 누릅니다 (짧게 누르면 무시합니다)

3. 그래도 안 켜지면 전원 + 볼륨 아래 버튼 10~15초 (강제 재부팅)


> 💡 제 폰도 처음엔 반응이 없었는데, 충전하다 보니 배터리 58%까지 정상 회복됐습니다.

> 오래된 배터리라도 의외로 살아있는 경우가 많아요.


---


## STEP 2. 개발자 모드 켜기 — 삽질 1번 지점


USB로 컴퓨터와 통신하려면 폰의 숨겨진 메뉴인 개발자 옵션을 열어야 합니다.

문제는 이 메뉴는 기본적으로 안 보인다는 것. 이걸 모르고 설정을 뒤지다가 포기하는 분들이 많습니다.


삼성·일반 안드로이드:

설정 → 휴대전화 정보 → (소프트웨어 정보) → 빌드 번호를 7번 연속 탭


샤오미(레드미·포코)는 다릅니다:

설정 → 내 기기 → MIUI 버전을 7번 연속 탭


"이제 개발자가 되셨습니다" 안내가 뜨면 성공. 설정 목록 맨 아래에 개발자 옵션이 생깁니다.


그 안에서 USB 디버깅을 켜세요.


> 💡 삽질 기록: 저는 처음에 "빌드 번호"를 7번이나 눌렀는데 아무 일도 없었습니다.

> 샤오미는 "MIUI 버전"을 눌러야 해요. 기기 브랜드에 따라 숨은 스위치 위치가 다른 게 포인트입니다.


---


## STEP 3. 컴퓨터와 연결하기 — 삽질 2번 지점


폰을 컴퓨터 USB에 꽂았는데 아무 반응이 없다면, 두 가지를 의심하세요.


1. 케이블이 충전 전용인가? — 가장 흔한 원인. 다른 케이블로 바꿔보세요

2. 폰의 USB 모드가 '충전만'인가? — 폰 화면의 USB 알림을 탭해서 파일 전송(MTP) 으로 변경


정상적으로 연결되면 컴퓨터에서 폰 저장소가 보이거나, 폰 화면에

"USB 디버깅을 허용하시겠습니까?" 창이 뜹니다. 항상 허용 + 허용을 눌러주세요.


---


## STEP 4. 초기화 전에 백업 — 되돌릴 수 없는 단계


여기서부터는 되돌리기 불가능합니다. 초기화하면 폰 속 사진·문자·연락처가 전부 사라집니다.


컴퓨터가 있다면: 폰을 USB로 연결한 상태에서 컴퓨터의 '내 PC'에 폰이 뜨면, 그 안의

DCIM(카메라 사진), Pictures, Download 폴더를 통째로 복사해두세요.


연락처는 별도로: 폰의 연락처 앱 → 설정 → 내보내기(.vcf 파일) → 이 파일도 컴퓨터로 복사


> 💡 제 폰에서는 카메라 사진 49장, 녹음 파일 93개, 연락처 백업 파일이 나왔습니다.

> 3년 전의 녹음 파일이 나오니 백업한 보람이 있네요.


---


## STEP 5. 구글 계정 빼기 — 모르면 폰이 잠깁니다 (제일 중요)


초기화 전에 반드시 해야 할 과정인데, 모르고 넘기면 초기화 후 폰이 구글 계정 비밀번호를 요구하며 잠깁니다. 이걸 FRP(공장 초기화 보호)라고 합니다.


1. 설정 → 동기화(계정) → Google → 계정 삭제(제거)

2. 혹시 Mi 계정(샤오미)에 로그인돼 있다면 이것도 로그아웃

3. 구글 계정 비밀번호를 알고 있다면 굳이 안 빼도 되지만, 빼고 초기화하는 게 깔끔합니다


> ⚠️ 유튜브에서 "초기화했는데 갑자기 옛날 구글 계정을 요구한다"는 글이 수두룩한 이유가 이겁니다.

> 반드시 계정부터 빼세요.


---


## STEP 6. 공장 초기화


방법 A (기본): 설정 → 내 기기 → 백업 및 재설정 → 공장 초기화(모든 데이터 지우기)


방법 B (화면이 말썽일 때): 전원을 끄고 전원 + 볼륨 위 동시에 눌러서 리커버리 모드 진입 →

볼륨 버튼으로 이동, 전원 버튼으로 선택 → Wipe Data → Wipe All Data → Yes


초기화 후 첫 부팅은 5~10분 걸립니다. 로고가 오래 떠 있어도 기다리세요.


> 💡 삽질 기록: 초기화 후 설정 중 지역 선택 화면에서 화면이 멈췄습니다.

> 전원 버튼을 10~15초 눌러 강제 재부팅하니 정상 진행됐어요.

> 초기화 직후 첫 부팅은 백그라운드 작업이 많아서 멈춘 것처럼 보일 수 있습니다. 당황하지 말 것!


---


## STEP 7. 새 폰처럼 설정하기


- 언어: 한국어 / 지역: 대한민국

- 와이파이 연결

- 구글 로그인 창이 뜨면 건너뛰기 가능 (STEP 5에서 계정을 잘 빼놨다면)


---


## STEP 8. 불필요한 앱 정리 + 광고 없는 앱으로 채우기


### 8-1. 기본 설치된 앱 중 지울 것들


샤오미 폰은 초기화해도 광고 띄우는 기본 앱들이 다시 깔려 있습니다.

설정 → 앱 관리에서 이런 것들은 삭제해도 됩니다:


- 미 스토어, 미 뮤직, 미 비디오, 뉴스 앱, 클리너 앱

- 페이스북 관련 앱 (폰에 페이스북 안 쓴다면 백그라운드만 먹는 앱들입니다)


> 💡 그리고 샤오미는 초기 설정 후 몰래 앱을 자동 설치하기도 합니다.

> 홈 화면에 생전 처음 보는 앱 아이콘이 생기면 의심 1순위!


### 8-2. 유튜브는 뉴파이프(NewPipe)로


NewPipe는 광고 없이 유튜브를 보는 오픈소스 앱입니다. 구글 계정도, 로그인도 필요 없습니다.

화면을 꺼도 소리가 계속 나오는 백그라운드 재생도 공짜입니다.


플레이스토어에는 없어서 APK 파일로 설치해야 하는데, 방법은 간단합니다:


1. 컴퓨터 브라우저에서 `github.com/TeamNewPipe/NewPipe` 접속 → Releases → 최신 APK 다운로드

2. APK 파일을 폰의 Download 폴더로 복사

3. 폰에서 파일 관리 앱 → Download → APK 탭 → 허용 → 설치


### 8-3. 앱 스토어도 하나 더: F-Droid


F-Droid는 광고 없는 무료 오픈소스 앱들의 스토어입니다. 위와 같은 방법으로

`f-droid.org`에서 APK를 받아 설치해두면, 이후에는 F-Droid 안에서 앱 검색·설치·자동 업데이트가 됩니다.


F-Droid 설치 후 가장 먼저 할 일:

F-Droid 설정 → "알 수 없는 앱 설치" 허용 (이걸 켜야 F-Droid가 앱을 설치해줍니다)


### 8-4. F-Droid에서 설치하면 좋은 앱들


| 용도 | 앱 이름 | 특징 |

|---|---|---|

| 유튜브 | NewPipe (F-Droid에도 있음) | 광고 없음, 백그라운드 재생 |

| 동영상/음악 재생 | VLC | 모든 포맷 |

| 음악 플레이어 | Musicolet | 가볍고 광고 없음 |

| 갤러리 | Fossify Gallery | MIUI 갤러리 대체 |

| 날씨 | Breezy Weather | 한국어 지원, 깔끔함 |

| 메모 | Fossify Notes / Markor | MIUI 메모 대체 |

| 브라우저 | Fennec F-Droid (파이어폭스) | MIUI 브라우저 대체 |


---


## STEP 9 (선택). 컴퓨터로 더 깔끔하게 — ADB 편


컴퓨터에 익숙하다면 여기서 한 단계 더 갈 수 있습니다. 구글에서

"adb platform-tools"를 검색해 다운로드하면, 명령창에서 폰을 원격 조종할 수 있습니다.


- `adb devices` — 폰이 연결됐는지 확인

- `adb install 앱이름.apk` — 컴퓨터에서 폰으로 앱 설치

- `adb shell pm list packages -3` — 폰에 깔린 앱 목록 보기


> ⚠️ 단, 샤오미 폰은 Mi 계정 로그인 없이는 `adb install`이 차단됩니다.

> 이럴 땐 위처럼 Download 폴더에 APK를 넣고 파일 관리에서 직접 탭 설치하면 됩니다.

> 저도 이 방법으로 해결했습니다.


> ⚠️ 또 하나: MIUI는 화면이 꺼지면 백그라운드 다운로드를 죽입니다.

> F-Droid에서 큰 앱을 받을 때는 화면을 켜둔 채로 두세요. 저는 갤러리 앱 받다가 두 번 당했습니다.


---


## 마무리: 이 폰의 진짜 가치


솔직히 말씀드리면, 2017년 폰에 2026년 소프트웨어를 올려도 속도가 빨라지지는 않습니다.

CPU가 2017년이니까요.


그럼에도 이 작업을 할 가치는 충분합니다:


1. 앱이 돌아갑니다 — 옛날 안드로이드는 시간이 갈수록 앱 설치가 차단되는데, 정리하면 몇 년은 더 갑니다

2. 보조기기로 완벽합니다 — 유튜브 전용기, 음악 재생기, 주방 레시피 화면, 아이 방 타이머

3. 버리지 않았다는 것 자체가 이득 — 전자폐기물 하나 줄인 셈


서랍 속 폰, 버리기 전에 한 번 꺼내보세요. 생각보다 건강하게 살아있을지도 모릅니다.


---


이 글은 2026년 11월, Redmi 5 Plus(MIUI 11)를 직접 초기화하고 정리한 실제 과정을 기록한 것입니다. 기기 브랜드에 따라 메뉴 이름은 조금씩 다를 수 있어요.


2026년 10월 31일 토요일

[갤럭시탭] 계정 없는 유튜브 기기 만들기 — 뉴파이프와 더블탭 제스처 (액자 시리즈 4편)


[갤럭시탭] 계정 없는 유튜브 기기 만들기 — 뉴파이프와 더블탭 제스처 (액자 시리즈 4편)

서두

시리즈로 태블릿을 액자로 만들었다. 그런데 10.1인치 1200×1920 화면을 액자로만 쓰기엔 아깝다. 유튜브도 시켜주자. 문제는 이 기기의 특수한 상황이다:

  • 구글 계정이 없다. 오딘 플래싱 편에서 봤듯, 이 구형 펌웨어의 설정 마법사는 계정을 넣는 순간 구글 어시스턴트 오류로 멈춘다. 애초에 액자 설계상 계정 없이 사는 게 방침이었다
  • 그래서 플레이스토어도 못 쓴다 (계정 필요)
  • 유튜브 뱅드(Vanced)는 2022년에 프로젝트가 끝났다 —  

왜 뉴파이프인가

앱계정플레이스토어현재 상태
공식 유튜브 앱필수필수이 기기에선 사실상 설치 자체가 안 됨
유튜브 뱅드선택불필요프로젝트 종료 (2022)
뉴파이프(NewPipe)불필요불필요오픈소스, 활발히 유지보수 중

뉴파이프는 유튜브를 계정 없이 보는 오픈소스 앱이다. 광고 없음, 배경 재생, 팝업 재생 지원. 구독도 구글 로그인 없이 기기에 로컬로 저장된다 — 계정 없는 기기와 완벽하게 맞는 조합이다. 안드로이드 8(2016년 기기)도 최신 버전(v0.29.1 기준 minSdk 23)까지 지원한다.

STEP 1. 설치 — 플레이스토어가 없으니까

설치 경로는 둘: F-Droid 스토어를 설치해서 거기서 받거나, GitHub 릴리스의 APK를 직접 받아 adb로 설치. 나는 후자를 택했다.

프롬프트 1

PC에서 뉴파이프 최신 버전을 설치하는 절차를 정리해줘:
1. GitHub의 TeamNewPipe/NewPipe 최신 릴리스에서 APK 받기
2. APK가 내 태블릿(안드로이드 8.0, minSdk 26 필요)과 호환되는지
   aapt dump badging으로 sdkVersion 확인
3. adb install로 설치
4. 설치 후 adb shell pm list packages | findstr newpipe로 확인

STEP 2. 진짜 문제 — 뉴파이프를 "어떻게" 여나

설치는 끝났는데, 발견한 문제가 하나 있다. 이 기기의 홈(런처)은 액자 앱이다. 앱 서랍도, 앱 목록도 없다. 뉴파이프를 실행할 방법이 존재하지 않는다.

선택지: 런처를 일반 런처로 바꾸면 액자가 아니게 되고, 매번 PC에서 am start로 열면 액자가 아니게 된다. 정답은 액자 앱 안에 문을 만드는 것 — 사진 화면을 두 번 탭하면 뉴파이프가 열리게 하자.

프롬프트 2

액자 앱의 사진 ImageView에 GestureDetector를 달아서:
1. 더블탭: org.schabi.newpipe 실행 — getLaunchIntentForPackage로
   설치돼 있을 때만 실행 (없으면 무시)
2. 기존 제스처와 충돌 없이: onDown은 true 반환,
   터치 리스너는 ImageView에만 바인딩
3. (기존에 있던) 한 번 탭 = 설정 화면과의 구분은
   GestureDetector가 알아서 해준다 — onSingleTapConfirmed를 쓰자

onSingleTapConfirmed 덕분에 "한 번 탭 = 설정"과 "두 번 탭 = 유튜브"가 충돌하지 않는다. 확정 대기 시간(약 0.3초)이 있긴 하지만 액자 앱에서는 아무 문제 없다.

STEP 3. 검증의 함정 — adb로 "더블탭"을 재현하기

코드가 끝나면 실기 검증인데, 여기서 재미있는 함정을 만났다. PC에서 이렇게 하면:

adb shell input tap 600 900   (탭 1)
(0.2초 대기)
adb shell input tap 600 900   (탭 2)

더블탭으로 인식되지 않는다. input tap 명령 하나당 안드로이드 VM이 새로 뜨느라 명령 간 실제 간격이 1초가 넘어버린다. 더블탭 인식 한계는 0.3초.

프롬프트 3

adb로 더블탭을 재현하는 테스트 명령을 만들어줘:
두 input tap을 백그라운드(&)로 동시에 발사해서
실제 탭 이벤트 간격을 0.3초 이하로 만들 것:
adb shell "(input tap 600 900 & sleep 0.05; input tap 600 900)"
성공 기준: dumpsys window의 mCurrentFocus가
org.schabi.newpipe로 바뀌는 것.

이렇게 프로그램적으로 더블탭이 열린 걸 확인하고, 이후 사용은 홈 버튼으로 마무리된다.

STEP 4. 액자와 유튜브의 공존

사용 흐름은 이렇다:

  1. 평소: 액자가 사진을 슬라이드쇼로 보여준다 (10초 간격)
  2. 유튜브 보고 싶으면: 화면 두 번 탭 → 뉴파이프
  3. 다 끝나면: 홈 버튼 → 즉시 액자로 복귀 (사진은 이어서 재생)
  4. 뉴파이프는 백그라운드에 살아 있어서, 다시 두 번 탭하면 보던 영상 그대로

뉴파이프가 홈 역할을 뺏지 않는 구조라서, 액자로서의 기본 임무가 절대 깨지지 않는다. 키오스크형 기기에 앱을 붙일 때의 기본기다: 홈만은 무조건 내 앱.

실전에서 배운 것들

  1. 계정 없는 유튜브는 충분히 실용적이다 — 검색·시청·구독(로컬)·배경재생까지 전부 된다. 못 하는 건 댓글 달기 정도.
  2. 앱 서랍이 없으면 문을 만들어라 — 제스처든, 설정 버튼이든, 홈 앱이 곧 출구다.
  3. adb 테스트도 시간이 개입된다 — input 명령의 VM 기동 지연(약 1초) 때문에 시간 민감한 제스처 테스트가 실패한다. 동시 발사로 회피.
  4. 구독은 로컬에 — 계정 연동이 없으면 기기가 바뀔 때 구독을 옮겨야 하는 단점이 있지만, 그 반대로 계정이 해킹당하거나 정책이 바뀌어도 내 목록은 내 기기에 그대로다.

마무리 — 시리즈 완결

  1. 오딘으로 순정 펌웨어 부활 (1편)
  2. 바이브코딩으로 액자 앱 개발 (2편)
  3. PC 동기화 도구로 사진 공급선 확보 (3편)
  4. 계정 없는 유튜브 기기로 격상 (4편, 이 글)

버려질 뻔한 웅진북클럽 태블릿은 이제 거실의 사진 액자이자, 아이들(과 아저씨)의 유튜브 기기다. 전부 케이블과 무료 소프트웨어로.

[안드로이드] PC의 사진을 케이블 한 번으로 액자에 보내기 — 동기화 도구를 바이브코딩으로 만들기 (액자 시리즈 3편)


[안드로이드] PC의 사진을 케이블 한 번으로 액자에 보내기 — 동기화 도구를 바이브코딩으로 만들기

서두

지난 글에서 액자 앱까지 완성했다. 그런데 앱은 어디까지나 기기에 저장된 사진을 보여줄 뿐이다. 새 사진은 어떻게 들어가나?

선택지를 정리하면 이렇다:

방법자동화계정문제
구글포토 연동완전 자동필요2025년 4월 구글이 개인 앱의 라이브러리 읽기 API를 차단 — 연동 앱들이 대량 사망
Syncthing류 폴더 동기화완전 자동불필요폰에 앱 설치·페어링 필요, 폰의 로컬 폴더만 가능
탐색기 드래그앤드롭수동불필요매번 어떤 파일이 새 건지 사람이 기억해야 함
케이블 + 자작 도구반자동불필요이 글의 주인공

나는 PC의 특정 폴더에 사진을 넣고, 케이블 연결 후 아이콘 더블클릭 한 번이면 끝나는 방식을 택했다. 구글포토에서 내려받은 사진, 폰에서 옮긴 사진, 카메라 사진 — 어디서 온 것이든 결국 PC 폴더에 모이니까, 그 폴더만 액자로 흘려보내면 된다.

요구사항은 네 가지:

  1. 증분 동기화 — 이미 보낸 사진은 건너뛰고 새 것만 (매번 300장을 다시 보내면 몇 분 걸린다)
  2. 한글 파일명 생존 — 우리나라 가족 사진은 이름에 한글이 있다
  3. 즉시 반영 — 복사 후 액자에 바로 나타나야 한다
  4. 안전장치 — "전체 삭제" 같은 위험한 동작엔 확인 절차

STEP 1. 기본 동기화 스크립트

프롬프트 1

파워셸 스크립트를 만들어줘. 기능:
- C:\액자사진 폴더의 이미지(jpg/jpeg/png/webp, 하위폴더 포함)를
  adb push로 태블릿 /sdcard/PhotoFrame 폴더로 복사
- adb는 C:\android-sdk\platform-tools\adb.exe
- 시작 시 adb devices로 태블릿 연결을 확인하고,
  연결 안 됐으면 "케이블 연결 + USB 디버깅 허용" 안내 후 종료
- 진행 상황을 콘솔에 한국어로 출력

바이브코딩으로 만든 도구는 30줄이면 충분하다. 그런데 이대로는 두 가지가 부족하다 — 새 파일 판별과, 복사 후 액자가 눈치채는 것.

STEP 2. 증분 동기화 — "이미 보낸 것"을 기억하기

프롬프트 2

증분 동기화를 추가해줘:
- .pushed.tsv 파일에 (보낸 파일명, 크기)를 탭으로 기록
- 실행 시 소스 폴더의 파일을 (파일명, 크기)로 대조해서
  이미 보낸 것은 건너뛰고 새 것만 push
- 소스의 하위폴더는 평평하게(flat) 태블릿으로 보내고,
  같은 이름인데 크기가 다른 파일은 이름 뒤에 _2, _3을 붙여 충돌 회피
- 보낼 게 없으면 "새 사진이 없습니다"라고 알리고 종료

매니페스트 방식의 장점은 기기 쪽 목록을 읽을 필요가 없다는 것(빠르다). 단점은 나중에 나온다 — 기억해두자.

STEP 3. 즉시 반영 — 여기서 하루를 태운 함정

파일을 복사만 하면 액자는 모른다. 액자 앱은 "사진 목록을 다시 읽어라"는 신호가 필요하다. PC에서는 이렇게 보내면 된다:

adb shell am broadcast -a com.handy.photoframe.REFRESH

그런데 이 명령이 안드로이드 8에서는 아무리 날려도 안 먹는다. 8.0부터 암시적 브로드캐스트가 차단됐기 때문이다. 매니페스트에 receiver를 등록해도, 기기가 잠자는 동안에는 전달이 안 된다. 나는 이거 하나 때문에 "복사는 됐는데 액자에는 사진이 안 떠"의 상태로 꽤 오래 헤맸다.

프롬프트 3

해결책을 적용해줘:
1. 앱 쪽: RefreshReceiver는 매니페스트 등록을 유지하되,
   브로드캐스트를 받으면 즉시 재스캔 + 현재 사진 새로 표시
2. 도구 쪽: push가 끝나면 브로드캐스트를 명시적 컴포넌트로 발송:
   adb shell am broadcast -a com.handy.photoframe.REFRESH
       -n com.handy.photoframe/.RefreshReceiver
(안드로이드 8+에서는 -n으로 수신자를 정확히 지정해야 전달된다)

이제 복사 끝나자마자 액자 화면에 새 사진이 뜬다. 밤 11시~아침 7시 야간 모드라면 아침 7시부터 나타난다(액자 앱이 밤에는 렌더링을 안 하기 때문).

STEP 4. 사용자 경험 — 아이콘 하나로

.bat 파일로 감싸 더블클릭 실행 가능하게 하고, 바로가기를 작업표시줄에 고정한다.

프롬프트 4

실행 마무리를 다듬어줘:
- 끝나면 콘솔이 닫히지 않게 "종료하려면 Enter" 대기
- 연결 실패 시 원인별로 다른 안내: 케이블 뽑힘 / unauthorized(태블릿에서 허용 필요)
- 사용법.txt 파일도 만들어줘: 폴더에 사진 넣기 → 케이블 연결 → 아이콘 더블클릭

STEP 5. 액자 비우기 — 위험한 기능은 더 조심히

사진을 통째로 갈아끼우고 싶을 때가 있다. 이때 필요한 건 "전부 지우기"인데, 실수로 눌렀다가 가족 사진이 통째로 날아가면 재앙이다.

프롬프트 5

'액자 비우기' 스크립트를 만들어줘. 안전 요건:
1. 태블릿의 /sdcard/PhotoFrame 안의 이미지 개수를 세서 보여주고
2. "지우려면 Y를 직접 입력" 확인을 받는다 (그 외 입력은 취소)
3. 지우는 대상은 /sdcard/PhotoFrame 폴더뿐 — DCIM 같은
   보관용 폴더는 절대 손대지 않는다 (경로를 하드코딩하지 말고
   PhotoFrame 폴더 안에서만 작업)
4. 삭제 후 동기화 기록(.pushed.tsv)도 함께 초기화한다
   (안 그러면 같은 이름·크기의 사진을 나중에 다시 넣을 때
   "이미 보냈음"으로 스킵돼서 액자에 영원히 안 뜬다!)
5. 삭제 완료 후 REFRESH 신호 전송

4번이 은근한 함정이다. 매니페스트를 같이 안 지우면, "비우고 → 같은 사진 다시 넣기"가 조용히 실패한다.

실전에서 배운 것들

  1. adb pull은 한글을 깨뜨리고, adb push는 의외로 잘 간다 — 반대 방향으로 갈 때 문제가 생긴다면 전송 경로(명령줄 인수)에 한글을 직접 쓰지 말았는지 보자. 스크립트 파일 안에 넣어두면 인코딩 문제가 사라진다.
  2. 안드로이드 8+의 암시적 브로드캐스트 차단 — 도구와 앱이 "묵시적으로 통신"하려 하면 반드시 명시적 컴포넌트(-n)로.
  3. 매니페스트(증분 기록)는 상태다 — 이를 지우는 연산(비우기)이 있으면 매니페스트도 같이 지워야 일관성이 유지된다.
  4. 위험한 동작에는 타이핑 확인 — 버튼 한 번보다 "Y 입력"이 실수를 확실히 막는다.
  5. 동기화 방향은 한쪽으로 — PC → 태블릿 일방향(추가만)이면 실수가 적다. 양방향 동기화는 "PC에서 지운 사진이 액자에서도 사라지는" 의미까지 생각해야 한다. 나는 추가만 하는 방식을 택했다.

마무리 — 시리즈 완결

이로써 웅진북클럽 태블릿이 완전히 재탄생했다:

  1. 오딘으로 순정 펌웨어 부활 (1편)
  2. 바이브코딩으로 액자 앱 개발 (2편)
  3. PC 동기화 도구로 사진 공급선 확보 (3편, 이 글)

폰도, 구글 계정도, 구독료도 없이. 있던 것은 케이블과 무료 도구뿐이다.