RustDesk-Custom — Galaxy Fold 6 customization

2026-05-24 대상: 본인 Mac mini M4 Pro ↔ Galaxy Fold 6 / iPad Pro M4 fork: rustdesk/rustdesk @ 1.4.6 commits: 5개

RustDesk 1.4.6 을 fork 해 Galaxy Fold 6 한 손 사용 + 본인 전용 자동 접속 흐름에 최적화한 빌드. 공식 앱의 모든 기능 유지 + 수동 입력 0 (ID·비밀번호·키보드·viewStyle 전부 자동) + 핵심 키 8개만 남긴 컴팩트 toolbar 를 status bar 바로 아래에 다크 톤으로.

핵심 숫자

toolbar 키 개수
30+ → 8
−73%
사용자 인터랙션 (접속 까지)
3+ → 1 탭
connect 한 번
코드 라인 (KeyHelpTools)
150 → 30
−80%
APK 크기
28 MB
release + obfuscate
서명
RSA 4096
25년 유효
데이터 보존
install -r
매 빌드 유지

공식 RustDesk vs 우리 빌드 비교

기능 공식 RustDesk RustDesk-Custom (우리)
앱 이름 표시 RustDesk RustDesk-Custom
버전 표시 1.4.6 1.4.6-custom +65
원격 Peer ID 자동 prefill 124083670
비밀번호 자동 prefill 평문 박힘 (본인 빌드)
비밀번호 dialog 자동 submit 사용자가 확인 탭 필요 200ms 후 자동
접속 후 loading dialog ~3초 자동 dismiss 첫 image 즉시 dismiss
접속 후 키보드 자동 표시 openKeyboard 자동
Modifier toolbar 키 개수 30+ (Ctrl·Alt·Shift·Cmd·Fn·pin·more·F1-F12·...) 8 (Esc·Enter·←↑↓→·Cmd+C/V)
toolbar 위치 화면 상단·접기 status bar 바로 아래
toolbar 디자인 검정 반투명 + 흰 11pt 글씨 다크 카드 + 진한 11pt 글씨 + 좌측 정렬 + 컴팩트
우하단 접기 FAB 있음 제거됨
home_page AppBar 있음 (~56dp) 제거 + SafeArea
한국어 IME 입력 안정성 iOS 만 composing 처리, Android 깨짐 multi-byte sessionInputString 통일
Galaxy Auto Blocker 우회 사용자가 끔 필요 ADB 명령으로 자동 통과
빌드 후 데이터 (Google 로그인·peer 설정) 유지 매번 uninstall 시 날아감 install -r 데이터 보존

장점 (카테고리별)

접속 시간 최소화

  • 앱 실행 → connect 1탭 → ~1초 후 원격 화면 + 키보드 동시 표시
  • ID·비밀번호 자동 prefill + dialog 자동 submit + loading dialog 강제 dismiss
  • 공식 앱 대비 약 5-8초 → 1-2초로 단축

화면 가림 최소화 + Galaxy Fold 6 한 손 친화

  • 핵심 8키만 — Esc · Enter · 방향키 4개 · Cmd+C · Cmd+V
  • status bar 바로 아래 1줄로 정착, 화면 상단·하단 충돌 0
  • 좌측 정렬 + 컴팩트 (28×26 dp 버튼, 11pt 폰트) — 손가락 도달 거리 최소
  • 접기 FAB·AppBar 제거 → 시각 노이즈 ↓
  • 다크 톤 카드 — 원격 화면과 분리 명확

한국어 입력 안정성

  • 공식 앱: Android 의 한글 IME 조합 (ㅎ→하→한) 중간 단계가 깨져서 전송 → "안녕하세요" → "ㅇㄴㅎ새요"
  • 우리 빌드: _handleIOSSoftKeyboardInput 통일 + multi-byte 문자는 bind.sessionInputString 직접 호출 → 한글 commit 시점에만 전송
  • 일본어·중국어 등 모든 multi-byte IME 같이 fix

빌드·배포 안정성

  • 자체 keystore RSA 4096 / SHA-384 / 25년 유효 → APK signature 영구
  • adb install -r 매 빌드 — Google 로그인 토큰 / RustDesk peer 설정 / 비밀번호 기억 모두 유지
  • Samsung One UI 6.1.1+ Auto Blocker (Fold 6 기본 활성) 우회 — verifier_verify_adb_installs 자동 비활성
  • R8 obfuscate + tree-shake — APK 28MB (debug 165MB → release 28MB, −83%)
  • Gradle JVM 4G heap + Kotlin 1.9.10 통일 + Flutter 3.22.3 — RustDesk CI 와 동일 환경

코드 품질

  • KeyHelpTools state 변수 3개 (_fn/_more/_pin) → 0개 — 모드 변경 필요 없는 단일 1줄 toolbar
  • 코드 라인 150 → 30 (−80%), 조건 분기 3 → 1
  • 회귀 fix 후 canonical RustDesk 동작 + 우리 UI 만 — Flutter 2026 권장 패턴 (Scaffold resizeToAvoidBottomInset + Stack body Positioned bottom)
  • 한국어 사용자 컨텍스트 (Galaxy + Mac) 에 맞춘 의식적 선택 (decision-matrix + 머스크 5단계 분석)

유연성

  • 비밀번호·ID 만 코드 1줄 변경하면 즉시 다른 peer 자동 접속
  • 같은 keystore 라 update 시 데이터 손실 없음
  • iOS 빌드 path 도 확보 — vcpkg arm64-ios + cargo iOS dylib 생성 완료 (signing 만 추가하면 iPad 도 가능)

기술 스택

레이어버전·설정
Rust1.91 + cargo-ndk + target aarch64-linux-android, aarch64-apple-ios
Flutter3.22.3 (RustDesk CI 와 일치, /tmp/flutter-3.22.3)
flutter_rust_bridge_codegen1.80.1 (uuid feature)
cargo-expand1.0.95
Kotlin1.9.10 (settings.gradle)
Java17.0.19 (Homebrew)
Gradle7.6.4 + JVM Xmx 4G
AGP7.3.1
Android NDK28.0.13004108
vcpkg native libs (Android)aom · ffmpeg · libvpx · libyuv · opus · libjpeg-turbo · oboe · cpu_features
vcpkg native libs (iOS)aom · ffmpeg · libvpx · libyuv · opus · libjpeg-turbo (IPHONEOS_DEPLOYMENT_TARGET=14.0)
iOS deployment target14.0+ (___chkstk_darwin symbol 보장)
KeystoreRSA 4096 / SHA-384 / 25년 / ~/.android-keystores/rustdesk-custom.jks
APK signingv2 signature, alias rustdesk-custom

커밋 히스토리 (RustDesk fork)

commit요약
03b4790원격 접속 자동화 — 비밀번호 dialog 자동 submit + loading dismiss + 자동 키보드
72c5e3fKeyHelpTools 위치 맨 위 (status bar 바로 아래)
3ebb7dd회귀 fix — auto hooks + Column/Positioned.fill revert (ImagePaint 회색 회귀 해결)
593e7ca⑦ Galaxy Fold 6 customization 메인 — toolbar 8키 + 자동 prefill + 2026 layout
d0d034b이름·버전 (RustDesk-Custom, 1.4.6-custom)

알려진 한계 + 향후 개선

한계대안 / 향후
APK reverse engineering 시 비밀번호 평문 노출SharedPreferences encrypted 또는 RustDesk peer "비밀번호 기억" 기능 + install -r 만으로 동등 효과 가능 (안전)
Galaxy Auto Blocker 끄지 않으면 첫 설치 시 차단ADB 1회 명령으로 우회 적용 ⇒ 자동화됨
iPad iOS 빌드 — signing 자동화 어려움Xcode UI Personal Team 1회 설정. Apple ID 가입만 필요 (무료, 7일 만료)
임의 modifier 조합 (Ctrl+Z, Cmd+S, Shift+Tab 등) 입력 불가BT 키보드 사용 또는 modifier 1개만 추가 도입 (Phase 1 분석에서 의식적 trade-off)
마우스 모드 + 키보드 없을 때 Esc 입력 불가화면 한 번 탭으로 키보드 호출 (사용자 의식적 수락)