다음을 통해 공유


Windows Subsystem for Android™️

Windows Subsystem for Android™️를 사용하면 Amazon Appstore에 제공되는 Android 애플리케이션을 Windows 11 디바이스에서 실행할 수 있습니다. Android는 Google LLC의 상표입니다. Windows 데스크톱 디바이스를 대상으로 하고 Windows 운영 체제에 맞게 최적화하려는 개발자는 이 가이드를 참조하세요.

Important

Microsoft는 WSA(Android™️용 Windows 하위 시스템)에 대한 지원을 종료합니다. 따라서 Windows의 Amazon Appstore 및 WSA에 종속된 모든 애플리케이션 및 게임은 2025년 3월 5일부터 더 이상 지원되지 않습니다. 그때까지 고객은 기술 지원을 계속 이용할 수 있습니다.
2024년 3월 5일 이전에 Amazon Appstore 또는 Android 앱을 설치한 고객은 지원 중단일인 2025년 3월 5일까지 해당 앱에 계속 액세스할 수 있습니다. 추가 질문이 있는 경우 support.microsoft.com에서 지원 팀에 문의하세요. 저희는 개발자 커뮤니티의 성원에 감사드리며, 앞으로도 피드백에 귀를 기울여 환경을 개선할 것입니다.

개발 환경 설정

Windows 데스크톱 환경에서 Android 앱을 테스트하려면 약간의 설정이 필요합니다.

필수 조건

디바이스 요구 사항.

Amazon Appstore 설치

다음 두 가지 사용자 작업 중 하나를 수행하면 Microsoft Store가 자동으로 백그라운드에서 Windows Subsystem for Android™️를 설치합니다.

  1. Microsoft Store에서 Amazon Appstore를 설치합니다. 받기를 선택하면 앱 설치가 시작됩니다.
  2. Microsoft Store에서 Android 앱을 처음으로 설치합니다. 이때 Amazon Appstore도 설치됩니다.

그러면 Amazon Appstore가 Windows 11 시작 메뉴에 표시되고 검색 시 사용할 수 있으며, Android 앱 카탈로그를 제공합니다. 모바일 앱 설정 및 기능을 제어할 수 있는 Windows Subsystem for Android™ 앱도 시작 메뉴에 표시됩니다.

Amazon Appstore에서 [받기] 단추를 사용할 수 있는 Microsoft Store 페이지의 스크린샷

참고 항목

Windows의 Amazon Appstore(Windows 11에서 Android 앱을 실행하기 위한 요구 사항)는 일부 지역에서 사용할 수 있습니다.

Windows Subsystem for Android™️ 설정

Windows Subsystem for Android™️️ 설정을 수정하려면 시작 > 모든 앱 > Windows Subsystem for Android™️으로 이동합니다. 특정 설정 앱 기능인 Windows에서 모바일 앱에 대한 설정 관리에 대해 자세히 알아봅니다.

Latte 앱 설정의 스크린샷

테스트 및 디버그

Windows 11 장치에서 Windows Subsystem for Android™️를 사용하여 앱을 테스트하고 디버그하려면 다음과 같은 설정 단계를 수행해야 합니다.

Windows [설정]에서 개발자 모드를 사용하도록 설정

먼저 개발자 모드를 사용하도록 설정해야 합니다. Windows Subsystem for Android™️ 설정을 엽니다. 설정이 열리면 고급 설정에서 개발자 모드를 사용하도록 설정합니다.

디버깅을 위해 Windows Subsystem for Android™️에 연결

디버깅을 위해 Windows Subsystem for Android™️ VM에 연결하려면 다음을 수행합니다.

  1. Amazon Appstore를 사용하여 설치된 Android 앱을 시작합니다.

  2. 다음 명령으로 adb 연결을 사용하여 연결할 수 있습니다(adb가 설치되어 있어야 함).

    adb connect 127.0.0.1:58526
    

테스트 디바이스에 연결

동일한 네트워크에 있는 Windows/Mac에서 (Windows Subsystem for Android™️가 설치된) 테스트 장치에 연결하려면 다음을 수행합니다.

  1. Windows Subsystem for Android™️가 설치된 테스트 장치에서 PowerShell 창을 열고 다음 명령을 실행하여 테스트 장치의 IP 주소를 확인합니다.

    ipconfig
    
  2. Android Studio 및 Android SDK가 설치된 (Mac/Windows) 디바이스 디버깅 터미널을 사용하여 다음 명령을 입력합니다.

    adb connect <TEST DEVICE IP ADDRESS>:58526
    

<TEST DEVICE IP ADDRESS>는 테스트 디바이스의 "ipconfig" 출력에서 찾을 수 있습니다. Android Studio에서 앱을 배포하고 디버그할 수도 있습니다.

패키지를 설치하고 변경 내용을 평가할 수 있도록 ADB(Android Debug Bridge)를 사용하여 개발 워크스테이션을 Android 디바이스에 직접 연결하려면 Android 오픈 소스 프로젝트 문서의 Android Debug Bridge를 참조하세요.

앱 디버그

Amazon Appstore를 사용하여 앱을 설치해야 하지만, Windows 디바이스에서 APK(Android 애플리케이션 패키지) 및 adb(Android Debug Bridge)를 사용하여 Android 앱을 디버그할 수 있습니다.

adb를 사용하여 APK를 디버그하려면 다음을 수행합니다.

  1. 위의 단계에 따라 Windows Subsystem for Android™️ VM에 연결합니다.

  2. adb 설치 명령 adb install app-debug.apk를 사용하여 APK를 설치합니다.

    예상 출력:

    Performing Streamed Install
    Success
    
  3. '앱 설치됨' 알림이 Windows 알림 메뉴에 표시되고 앱을 선택하면 앱이 시작됩니다.

유니버설 APK 빌드

Windows Subsystem for Android™️는 Intel Bridge 기술을 활용하여 x86 기반 프로세서에서 Arm 애플리케이션을 사용하도록 설정합니다. Arm 애플리케이션은 기본적으로 Arm 기반 프로세서에서 실행됩니다. 에뮬레이션 계층은 성능 오버헤드를 초래합니다. 최적의 성능을 위해 x86-64 및 Arm64 아키텍처를 모두 지원하는 애플리케이션을 제출하세요.

Windows 디바이스의 입력 호환성 고려 사항

휴대용 디바이스용으로 설계되었으며 Amazon Appstore를 통해 Windows 데스크톱 디바이스에서 실행할 때 호환되도록 Android 앱 코드 업데이트가 필요할 수 있는 몇 가지 고유한 입력 동작을 고려해야 합니다.

키보드 입력

화면의 가상 키보드 입력기(IME)에서 처리하는 텍스트 입력 필드(예: EditText)의 경우 앱이 예상대로 동작해야 합니다 (Android 문서의 EditText 클래스 참조).

프레임워크에서 예상할 수 없는 키 입력의 경우 앱에서 동작을 직접 처리해야 합니다. 이미 앱 내에서 이 기능이 구현된 경우 추가 작업이 필요하지 않습니다.

예를 들어 일부 게임에서는 터치 입력과 함께 키보드의 w a s d 키를 통해 쉽게 이동할 수 있도록 지원합니다.

다음은 개발자가 Windows 11 디바이스용 앱을 빌드할 때 코드 업데이트를 고려해야 하는 키보드 입력입니다.

  • Enter 키
  • 화살표 키 및 Tab 키 탐색
  • 선택한 항목 강조 색 변경
  • Ctrl 기반 바로 가기

다음 Android 설명서에 따라 데스크톱 디바이스에서 이러한 키보드 입력 시나리오에 맞게 최적화하는 방법에 대해 자세히 알아보세요.

마우스 입력

개발자는 Windows 디바이스용 앱을 빌드할 때 다음 마우스 입력에 대한 코드 업데이트를 고려해야 합니다.

  • 마우스 오른쪽 단추로 클릭
  • 도구 설명/마우스로 가리키기 텍스트
  • 마우스로 가리키기 효과
  • 마우스 스크롤 휠 동작
  • 끌어서 놓기

키보드 입력과 유사한 마우스 입력은 공식 Android 앱 지침을 따라야 합니다. 즉, SOURCE_MOUSE 상수와 쌍을 이루는 InputDevice 클래스를 사용합니다. 다음 Android 설명서에 따라 데스크톱 디바이스에서 이러한 마우스 입력 시나리오에 맞게 최적화하는 방법에 대해 자세히 알아보세요.

창 관리 및 크기 조정

기존의 모바일 폼 팩터와 달리, Windows 11에서 실행되는 Android 앱은 크기를 자유롭게 조정할 수 있고, 크기 조정 응답성이 우수해야 하며, Windows 작업/제스처를 사용하여 스냅할 수 있습니다.

최소 화면 요구 사항

Windows 11을 사용하려면 적어도 >9인치보다 큰 화면과 720p 해상도(1280x720)가 필요합니다.

레터 & 필러 박싱

창이 표시되는 디바이스 화면 크기 간에 창 크기의 가로 세로 비율이 맞지 않으면 레터박싱(창이 높이보다 넓거나 가로 방향으로 더 긴) 또는 필러박싱(창이 너비보다 좁거나 세로 방향으로 더 긴)이 발생할 수 있습니다. 그 결과 가운데에 맞추기 위해 창의 측면에 막대가 배치됩니다. 이러한 막대는 선택한 시스템 설정에 따라 밝은 또는 어두운 테마로 표시될 수 있습니다. 이 동작은 Android 앱이 스냅되거나 최대화될 때만 발생하며, Android 앱은 Windows의 풍부한 스냅 기능을 활용하여 창 모델에 통합할 수 있습니다.

창을 가운데에 맞추기 위해 빈 막대를 표시하는 레터박싱 및 필러박싱의 예

크기 조정과 관련한 추가 고려 사항

Windows 11 디바이스에서 실행되도록 Android 앱을 업데이트할 때 창 관리 및 크기 조정과 관련하여 다음 사항도 고려해야 합니다.

  • 초기 시작 크기
  • 창 치수
    • 콘텐츠 범위
    • 자유 형식 크기 조정
  • 화면 회전

다음 Android 문서의 창 관리 가이드에 따라 데스크톱 디바이스에서 창 크기 조정 시나리오를 최적화하는 방법에 대해 자세히 알아보세요.

애플리케이션 수명 주기 이벤트

다중 창 환경을 위한 Android 애플리케이션 개발은 애플리케이션에서 활용하도록 선택한 수명 주기 이벤트에 영향을 줍니다. onPause 이벤트를 재정의하면 휴대폰이나 태블릿에서 원하는 결과를 얻을 수 있지만 일반적으로 앱의 UX를 변경하는 경우에는 이 이벤트를 사용해서는 안 됩니다.

수명 주기 이벤트에 관한 설명은 Android 설명서를 참조하세요. 대부분의 경우 onPause 또는 onUserLeaveHint 이벤트가 아닌 onStop 이벤트를 사용해야 합니다. 실제로 많은 다중 창 Android 구현은 onUserLeaveHint 알림을 제공하지 않으므로 해당 이벤트 처리기에 있을 수 있는 중요 비즈니스용 논리는 Windows Subsystem for Android™️를 비롯하여 이러한 플랫폼에서 호출되지 않습니다.

VM 수명 주기 고려 사항

Windows Subsystem for Android™️는 AOSP 프레임워크 및 키보드, 마우스, 터치, 펜 등 장치와의 호환성을 제공하는 VM(가상 머신)을 활용합니다.

Windows Subsystem for Android™️를 사용하여 앱을 실행하는 VM의 상태는 다음 세 가지 중 하나입니다.

  1. 실행 중
  2. 가벼운 절전 모드: 3분 동안 앱 활동이 없으면 이 상태가 활성화됩니다. 사용자 활동 또는 앱 알림이 있으면 비활성화됩니다.
  3. 실행 중 아님: 7분 동안 앱 활동이 없으면 이 상태가 활성화됩니다.

이러한 상태 간의 전환은 Android 앱 또는 앱 알림을 시작하거나 상호 작용하는 등의 사용자 활동에 의해 트리거됩니다. Android 앱은 일시 중지되었다가 창이 최소화되면 중지됩니다.

실행 중, 가벼운 절전 모드, 실행 중 아님 상태를 보여주는 VM 수명 주기 그래프

VM 속성

다음은 Windows Subsystem for Android™️ VM의 속성입니다. 이러한 값을 하드코딩하면 향후 호환성 문제가 발생할 수 있으므로 권장되지 않습니다.

속성
Build.MANUFACTURER Microsoft Corporation
Build.MODEL Subsystem for Android(TM)
Build.VERSION.SDK_INT 33
Build.BOARD windows

Windows 앱으로 리디렉션

Windows Subsystem for Android™️은️ 파일 및 일반적인 URI 스키마에 대한 의도를 해당 Windows 기본 파일/프로토콜 처리기로 자동으로 리디렉션합니다(여러 의도 필터가 일치하는 경우 사용자의 선택기 대화 상자에 "Windows 기본 앱" 옵션이 표시됨). 지원되는 파일 의도에는 파일을 열기 전에 Windows 다운로드 폴더에 복사하는 ACTION_VIEW, ACTION_EDIT, ACTION_SEND, ACTION_SEND_MULTIPLE이 포함됩니다. 지원되는 URI 의도에는 http/https 체계의 경우 ACTION_VIEW, mailto 체계의 경우 ACTION_VIEWACTION_SENDTO가 포함됩니다.

Android 앱은 사용자 지정 URI 체계를 사용하여 Windows 앱으로 수동으로 리디렉션할 수도 있습니다. 의도 동작을 com.microsoft.windows.LAUNCH_URI(으)로 설정하고 사용자 지정 URI를 값으로 사용하여 이름이 com.microsoft.windows.EXTRA_URI인 의도에 문자열을 추가합니다. 예를 들어 Android 앱(Java)에서 Windows 계산기 앱을 시작하려면 다음을 실행합니다.

Intent intent = new Intent("com.microsoft.windows.LAUNCH_URI");
intent.putExtra("com.microsoft.windows.EXTRA_URI", "ms-calculator:");
 
try {
    startActivity(intent);
} catch (ActivityNotFoundException e) {
    // Not running in Windows Subsystem for Android&trade;️ (or running on an older build that did not contain this feature).
}

보안

Windows 커널 모드 드라이버와 중간 IL(무결성 수준)에서 실행되는 Windows 애플리케이션은 임의의 Android 컨테이너와 Android 앱 메모리를 검사할 수 있습니다. 속이는/매크로/봇/의심스러운 동작을 감지하는 감지 기능을 추가할 계획이 당분간은 없습니다.

getSecurityLevel을 쿼리하는 개발자는 SECURITY_LEVEL_SW_SECURE_CRYPTO를 받게 됩니다. Android API 참조 가이드에서 getSecurityLevel에 대해 자세히 알아보세요.

Windows Subsystem for Android™️ 제거

Windows Subsystem for Android™️를 제거할 수 있지만, 연결된 모든 앱도 함께 제거됩니다.

  • Amazon Appstore를 제거하면 Windows Subsystem for Android™️와 모든 기타 Android 앱이 제거됩니다.
  • Amazon Appstore 앱을 제거하면 Amazon Appstore 앱만 제거됩니다(Windows 앱도 마찬가지).
  • Windows Subsystem for Android™️를 제거하면 Amazon Appstore와 모든 Android 앱이 제거됩니다.

문제 해결

Windows에서 Amazon Appstore와 관련된 문제가 발생하는 경우 다음과 같은 문제 해결 단계를 시도해 보세요.

  1. Windows 작업 표시줄에서 Windows 검색을 선택합니다.
  2. 'Amazon Appstore'를 검색하고 Amazon Appstore 아이콘을 마우스 오른쪽 버튼으로 클릭합니다.
  3. 드롭다운 옵션에서 '앱 설정'을 선택합니다.
  4. '스토리지 및 캐시'를 선택하고 '스토리지 지우기' 및 '캐시 지우기'를 모두 클릭합니다.
  5. 뒤로 돌아가서 '강제 중지'를 선택합니다.
  6. Amazon Appstore 설정 창을 닫습니다.
  7. Amazon Appstore를 다시 시작합니다.

Windows Subsystem for Android™️ 설정 앱과 관련된 추가 문제 해결 단계를 찾거나 피드백 허브를 사용하여 피드백을 남기려면 Windows의 모바일 앱 문제 해결 및 FAQ를 참조하세요.