DroidDeck brings the SteamOS experience to Android
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
DroidDeck는 SteamOS 경험을 Android로 가져옵니다. Adreno 기반 핸드헬드에서 Valve의 Steam 클라이언트를 Big Picture 모드로 실행하고, Valve의 ARM64 Proton을 통해 Windows 게임을 구동합니다.
참고: DroidDeck은 독립 웹사이트가 없습니다. DroidDeck 팀이라고 주장하는 웹사이트의 다운로드 링크를 클릭하지 마세요.
지원되는 Adreno 기기(730 이상 또는 8xx)에서 Android 9 이상을 사용하세요. Adreno 6xx는 실험적입니다. DirectX 11은 DXVK 2를 사용하며 실행될 수 있고, DirectX 12 게임은 여전히 충돌할 수 있습니다. Mali, Xclipse, PowerVR, Adreno 710은 지원되지 않습니다. 루트는 필요하지 않습니다. 런타임에 약 3GB, 데스크톱과 에뮬레이터에 1.1GB가 추가로 필요합니다. Releases에서 APK를 설치하고 Linux 런타임을 설치한 다음 Play를 눌러 로그인하세요. Steam은 첫 실행 시 다운로드됩니다. 데스크톱과 에뮬레이터를 사용하려면 Desktop & apps를 설치하세요. Store는 Flatpak을 통해 Flathub의 Linux 앱과 게임(ARM64 빌드)을 설치하며, Appimage 설치와 스크립트 설정을 위한 추가 옵션도 제공합니다. Stores(Setup › Stores › "Show Stores in the rail")는 GOG, Epic Games, Amazon Games에 로그인하여 게임을 Games 저장소에 다운로드합니다. Epic은 자체 직접 API 설치 경로를 유지합니다. Epic Stores를 열면 Epic의 공식 Linux 런처 프리뷰가 준비됩니다. 설치되면 DroidDeck에서 실행한 Epic 게임은 해당 클라이언트를 사용하며, 클라이언트에 설치된 게임은 DroidDeck 라이브러리와 바로가기로 가져옵니다. x86-64 클라이언트는 ARM에서 FEX를 통해 실행되며 DroidDeck은 Proton 훅을 유지합니다. 이 프리뷰와 ARM 설정은 Epic이 공식 지원하는 Linux 범위를 벗어납니다. 스토어 칩 행의 톱니바퀴는 해당 스토어의 시작 탭과 다운로드 속도 등급을 설정합니다.
Android 14 이상에서는 Steam이 실행되기 전에 개발자 옵션에서 Disable child process restrictions를 켜야 합니다. 개발자 설정에 이 옵션이 없는 경우(Android 12 및 13 기기) Steam 첫 실행 시 "Fix it for me" 버튼이 표시되며, 설정 과정을 자동화하는 데 도움을 줍니다.
DroidDeck 메뉴, 런처, 데스크톱 세션, 게임 전반에 걸친 앱 전체 가상 화면 설정은 Setup → Smart glasses를 사용하세요. 지원되는 VITURE, RayNeo, XREAL, Rokid 연결은 3DoF를 제공하며, Luma Ultra는 선택적 실험적 6DoF와 스테레오 보조 손/Joy-Con 추적을 추가합니다. 모델 지원과 SDK 요구 사항은 다릅니다. 지원 기기, 컨트롤, 설정, 제한 사항은 스마트 글래스 지원 매트릭스를 참조하세요.
도움, Preview 빌드, 기기 보고를 위해 DroidDeck Discord에 참여하세요. 버그 보고는 #bug-reports 포럼에 올리며, 로그가 함께 첨부되도록 Share logs(Setup 또는 세션 드로어)에서 zip을 첨부하세요.
Docker, Java 17, Android SDK/NDK, rustup을 통한 Rust, GitHub CLI, Python 3, zstd가 설치된 상태에서 tools/buildlocal.sh를 실행하세요. 이 스크립트는 CI와 동일한 네이티브 라이브러리, 고정된 컴포넌트, 오디오 싱크를 준비한 다음 APK의 에셋, JNI 내보내기, 의존성을 검사합니다. APK는 app/build/outputs/apk/release/app-release.apk에 있습니다. 기존 PulseAudio 13.0 소스 디렉터리를 지정하려면 DROIDDECKPA13SOURCEDIR을 설정하여 다운로드를 건너뛰세요. 릴리스 빌드 위에 설치하려면 DROIDDECKSIGNINGENV를 서명 환경 파일로 설정하세요. 상대 키스토어 경로는 해당 파일 옆에서 확인됩니다. 연결된 기기에 설치하려면 tools/deploy_local.sh를 실행하세요.
준비 후에는 일반적인 ./gradlew :app:assembleRelease 빌드가 검증된 입력을 재사용할 수 있습니다. 네이티브 소스, 컴포넌트 고정, 스테이징된 파일이 변경되면 패키징이 중단되며 헬퍼를 다시 실행하라는 안내가 표시됩니다. 생성된 오디오는 app/build/ 아래에 유지되며, 추적되는 기본 번들은 절대 수정되지 않습니다. ./gradlew -PskipRust=true :app:testDebugUnitTest는 네이티브 준비가 필요하지 않습니다. 스토어 엔진이 없는 APK를 만들려면 DROIDDECKSKIPRUST=1 tools/build_local.sh를 사용하세요. 캐시된 엔진 라이브러리도 생략됩니다.
준비된 Windows 체크아웃에서는 ./tools/run_windows.ps1을 실행하거나(선택적으로 -Serial 사용), Android Studio에서 DroidDeck XR을 선택하고 연결된 휴대폰에서 app 모듈을 실행하세요. 머신별 옵션은 무시되는 local.properties에 있습니다. droiddeck.python은 Python 실행 파일을 선택하고, droiddeck.skipRust=true는 선택적 스토어 다운로드 엔진을 생략하며, droiddeck.debugApplicationIdSuffix=.xr은 서명된 릴리스와 함께 DroidDeck XR Dev를 설치합니다. 개발 앱은 자체 런타임과 Steam 로그인을 가집니다. 로컬 Java 선택은 .gradle/config.properties에 있습니다.
python tools/preparewindowsruntime.py는 고정된 CI APK, 로컬에서 재빌드된 세 개의 preload 라이브러리, build/windows-setup/의 체크섬 고정 Gamescope 아카이브에서 이 체크아웃의 감사된 런타임 입력을 복원합니다. 먼저 Docker Desktop의 Linux 엔진을 시작하세요. 이제 준비 과정은 현재 소스에서 DroidDeck의 ARM64 VR 드라이버와 Vulkan 레이어를 재빌드하고 네이티브 회귀 테스트를 실행합니다. 컴파일러 이미지는 처음 사용할 때 자동으로 빌드됩니다. Vulkan 헤더는 --llvm-strip 옆의 NDK에서 가져오거나 명시적 --vk-include 디렉터리에서 가져옵니다.
해당 빌드를 재사용하려면 --rebuilt-vr build/windows-setup/vr을 전달하세요. 준비 과정은 vr-build.json을 현재 Git 리비전, 소스 파일, Vulkan 헤더, 출력 체크섬, ARM64 아키텍처와 대조하여 검증합니다. 누락되거나 오래된 빌드는 도너의 VR 라이브러리로 대체되지 않고 실패합니다. 스크립트는 실제 도너 CI 병합 트리를 확인하고, 감사되지 않은 관련 없는 런타임 변경은 여전히 거부하며, 컴포넌트 출처를 app/build/windows-runtime-provenance.json에 기록합니다. 로컬에서 재빌드할 때는 이 무시되는 준비 파일을 보존하세요. clean은 준비된 에셋과 해당 검증 매니페스트를 제거합니다.
bash tools/test_local.sh로 헬퍼와 preload 회귀 스위트를 실행하세요. macOS에서는 헬퍼의 런타임 및 CI와 일치하도록 Docker를 통해 Linux에서 실행되며, macOS 헤더에 대해 Linux preload를 컴파일하지 않습니다.
호환성과 성능은 기기마다 다르며, 하드웨어 검증은 제한적입니다. 데스크톱 컴포지팅은 소프트웨어 렌더링을 사용합니다. Firefox 샌드박싱은 proot 아래에서 축소됩니다. 로그는 앱 전용(files/logs/, 최근 30개 세션)으로 보관됩니다. Share logs는 최신 세션을 스토어 및 도구 로그와 함께 하나의 정리된 zip으로 묶습니다.