여러 사용자 지원

Android는 사용자 계정과 애플리케이션 데이터를 분리해 하나의 Android 기기에서 여러 사용자를 지원합니다. 예를 들어, 부모가 아이들의 가족용 태블릿 사용을 허용하거나, 가족이 자동차를 공유하거나, 긴급 대응팀이 당직 업무를 위해 휴대기기를 공유할 수 있습니다.

용어

Android에서는 Android 사용자와 계정을 설명할 때 다음 용어를 사용합니다.

일반

Android 기기 관리에서는 다음 일반 용어를 사용합니다.

  • 사용자. 각 사용자는 실제 개인을 가리키는 데 사용하는 용어입니다. 각 사용자에게는 별개의 애플리케이션 데이터와 일부 고유한 설정 및 사용자 간의 명확한 전환을 위한 사용자 인터페이스가 있습니다. 한 사용자가 활성 상태이면 다른 사용자는 백그라운드에서 실행될 수 있습니다. 필요한 경우 시스템에서 리소스를 절약하기 위해 사용자를 종료할 수 있습니다. 보조 사용자는 사용자 인터페이스를 통해 직접 생성하거나 기기 관리 애플리케이션에서 생성할 수 있습니다.
  • 계정. 계정은 사용자 내에 포함되지만 사용자가 정의하지 않습니다. 사용자가 특정 계정으로 정의되거나 연결되지도 않습니다. 사용자 및 프로필에는 고유한 계정이 있지만 계정이 있어야 작동하는 것은 아닙니다. 계정 목록은 사용자별로 다릅니다. 자세한 내용은 Account 클래스 정의를 참조하세요.
  • 프로필. 프로필은 분리된 앱 데이터를 보유하지만, 일부 시스템 차원의 설정(예: Wi-Fi 및 블루투스)을 공유합니다. 프로필은 사용자 존재의 하위 집합이자 사용자 존재와 연결되어 있습니다. 사용자는 프로필을 여러 개 가질 수 있습니다. 프로필은 기기 관리 애플리케이션을 통해 생성합니다. 프로필에는 항상 상위 사용자와의 변하지 않는 연결이 있는데, 이는 프로필을 생성한 사용자가 정의합니다. 프로필은 프로필을 생성한 사용자보다 오래 존재할 수 없습니다.
  • . 애플리케이션 데이터는 연결된 각 사용자 내에 있습니다. 앱 데이터에는 동일한 사용자 내 다른 애플리케이션에서 샌드박스가 설정됩니다. 동일한 사용자 내의 앱은 IPC를 통해 상호작용할 수 있습니다. 자세한 내용은 기업용 Android를 참고하세요.

사용자 카테고리

Android 기기 관리에서는 다음과 같은 사용자 카테고리를 사용합니다.

  • 시스템 사용자. 기기에 추가된 첫 번째 사용자. 시스템 사용자는 초기화해야 삭제할 수 있으며 다른 사용자가 포그라운드에 있더라도 항상 실행 중입니다. 또한, 시스템 사용자는 시스템 사용자만 설정할 수 있는 특별한 권한과 설정을 갖습니다.
  • 보조 사용자. 시스템 사용자 외에 기기에 추가된 모든 사용자. 보조 사용자는 보조 사용자 본인 또는 관리자가 삭제할 수 있으며 기기의 다른 사용자에게 영향을 주지 않습니다. 보조 사용자는 백그라운드에서 실행될 수 있으며 네트워크에 계속 연결되어 있을 수 있습니다.
  • 게스트 사용자. 임시 보조 사용자. 게스트 사용자에게는 필요를 다하면 신속하게 게스트 사용자를 삭제할 수 있는 명시적 옵션이 있습니다. 게스트 사용자는 한 번에 한 명만 있을 수 있습니다.
  • 관리자. 다른 사용자를 만들고 삭제할 뿐 아니라 일반적인 멀티 사용자 설정을 제어할 수 있는 권한이 있는 사용자입니다. 기본적으로 시스템 사용자만 관리자입니다.

프로필 카테고리

Android 기기 관리에서는 다음과 같은 프로필 카테고리를 사용합니다.

  • 관리 프로필. 직장 데이터 및 앱을 포함하기 위해 애플리케이션에서 생성합니다. 관리 프로필은 프로필 소유자(회사 프로필을 생성한 앱)가 전적으로 관리합니다. 상위 사용자와 회사 프로필은 런처, 알림 및 최근 작업을 공유합니다.
  • 제한된 프로필. 제한된 프로필에서 사용 가능한 앱을 제어할 수 있는 상위 사용자 기반의 계정을 사용합니다. 태블릿 및 TV 기기에서만 사용할 수 있습니다.

사용자 유형

Android 11에는 위의 사용자와 프로필 분류가 잘 정의된 사용자 유형이 공식화되어 있습니다. 이러한 유형은 Android 멀티 사용자 기능에서 허용하는 다양한 유형의 사용자와 프로필을 나타냅니다.

사전 정의된 AOSP 사용자 유형은 frameworks/base/core/java/android/os/UserManager.java에 정의되어 있으며 현재 다음을 포함합니다.

  • android.os.usertype.full.SYSTEM
  • android.os.usertype.full.SECONDARY
  • android.os.usertype.full.GUEST
  • android.os.usertype.full.DEMO
  • android.os.usertype.full.RESTRICTED
  • android.os.usertype.profile.MANAGED
  • android.os.usertype.system.HEADLESS

OEM은 frameworks/base/core/res/res/xml/config_user_types.xml 파일을 오버레이하여 이러한 사용자 유형을 구성할 수 있습니다. 이렇게 하면 기본 제한, 아이콘, 배지, 최대 허용 사용자 수를 포함하여 각 사용자 유형의 기본 구성을 쉽게 변경할 수 있습니다.

OEM은 구성 가능한 AOSP 사용자 유형 외에도 frameworks/base/core/res/res/xml/config_user_types.xml 파일을 사용하여 새 프로필 유형을 정의할 수 있습니다. OEM은 이를 통해 원하는 경우 비관리 프로필 유형을 자체적으로 도입할 수 있습니다. 그러나, 필요에 따라 이제 관리 프로필이 새 프로필 유형을 처리하는지 확인하기 위한 코드 수정을 비롯하여 이러한 변경사항을 지원하기 위해 필요한 플랫폼 수정은 OEM이 담당합니다.

멀티 사용자 사용 설정

Android 5.0부터 멀티 사용자 기능은 기본적으로 사용 중지로 설정되어 있습니다. 이 기능을 사용 설정하려면 기기 제조업체에서 frameworks/base/core/res/res/values/config.xml의 다음 값을 교체하는 리소스 오버레이를 정의해야 합니다.

<!--  Maximum number of supported users -->
<integer name="config_multiuserMaximumUsers">1</integer>
<!--  Whether Multiuser UI should be shown -->
<bool name="config_enableMultiUserUI">false</bool>

이 오버레이를 적용하고 기기에서 게스트 및 보조 사용자를 사용 설정하려면 Android 빌드 시스템의 DEVICE_PACKAGE_OVERLAYS 기능을 사용하여 다음 값을 교체합니다.

  • 1보다 큰 값을 가진 config_multiuserMaximumUsers
  • true를 가진 config_enableMultiUserUI

기기 제조업체에서는 최대 사용자 수를 결정할 수 있습니다. 기기 제조업체 등이 설정을 수정한 경우 SMS 및 전화 통신이 Android 호환성 정의 문서(CDD)에 정의된 대로 작동하는지 확인해야 합니다.

여러 사용자 관리

사용자 및 프로필 관리(제한된 프로필은 제외)는 사용을 제한하기 위해 DevicePolicyManager 클래스의 API를 프로그래매틱 방식으로 호출하는 애플리케이션에서 실행합니다.

학교 및 기업에서는 기기에서 앱과 데이터의 전체 기간 및 범위를 관리하기 위한 사용자 및 프로필을 선택할 수 있고, UserManager API와 함께 위에서 설명한 유형을 사용하여 사용 사례에 맞는 고유한 솔루션을 빌드할 수 있습니다.

멀티 사용자 시스템 동작

사용자가 기기에 추가된 경우 다른 사용자가 포그라운드에 있으면 일부 기능이 축소될 수 있습니다. 앱 데이터는 사용자별로 구분되기 때문에 앱의 상태는 사용자마다 다릅니다. 예를 들어, 현재 활성 상태가 아닌 사용자의 계정으로 전송되는 이메일은 사용자 및 계정이 기기에서 활성 상태가 될 때까지 사용할 수 없습니다.

기본적으로 전화 통화 및 문자에 관한 전체 액세스 권한은 시스템 사용자만 갖습니다. 보조 사용자는 수신 전화를 받을 수는 있지만 문자를 보내거나 받을 수는 없습니다. 관리자는 다른 사용자가 이 기능을 사용할 수 있도록 설정해야 합니다.

참고: 보조 사용자의 전화 및 SMS 기능을 사용 설정 또는 사용 중지하려면 설정 > 사용자로 이동하여 사용자를 선택하고 전화 통화 및 SMS 허용 설정을 끕니다.

보조 사용자가 백그라운드에 있으면 일부 제한사항이 적용됩니다. 예를 들어, 백그라운드에 있는 보조 사용자는 사용자 인터페이스를 표시하거나 블루투스 서비스를 활성화할 수 없습니다. 또한, 포그라운드 사용자의 작업을 위해 기기에 추가 메모리가 필요한 경우 시스템에서 백그라운드에 있는 보조 사용자를 실행 중지합니다.

Android 기기에서 여러 사용자를 선택할 때 다음 동작을 염두에 두세요.

  • 알림은 한 번에 단일 사용자의 모든 계정에 대해 나타납니다.
  • 다른 사용자에 대한 알림은 해당 사용자가 활성화될 때까지 표시되지 않습니다.
  • 각 사용자는 앱을 설치하고 배치할 수 있는 작업 공간을 갖습니다.
  • 다른 사용자의 앱 데이터에 액세스 할 수 있는 사용자는 없습니다.
  • 사용자 누구나 모든 사용자를 위해 설치된 앱에 영향을 줄 수 있습니다.
  • 관리자는 보조 사용자가 설정한 앱 또는 전체 작업공간도 삭제할 수 있습니다.

Android 7.0에서는 다음과 같은 몇 가지 기능이 개선되었습니다.

  • 직장 프로필 전환. 사용자는 자신의 관리 프로필을 사용 중지할 수 있습니다(예: 회사 외부에 있는 경우). 이 기능은 사용자를 중지하여 실행할 수 있으며 UserManagerService에서 ActivityManagerNative#stopUser()를 호출합니다.
  • 상시 사용 설정 VPN 이제 VPN 애플리케이션을 사용자, 기기 DPC 또는 관리 프로필 DPC(관리 프로필 애플리케이션에만 적용)에서 상시 사용하도록 설정할 수 있습니다. VPN이 사용 설정되면 애플리케이션이 공용 네트워크에 액세스할 수 없습니다(VPN이 연결되고 연결이 VPN을 통해 라우팅될 수 있을 때까지 네트워크 리소스 액세스가 중지됨). device_admin을 보고하는 기기는 상시 사용 설정 VPN을 구현해야 합니다.

Android 7.0 기기 관리 기능에 관한 자세한 내용은 Android for Work를 참조하세요.

Android Automotive 멀티 사용자

Android Automotive는 Android의 멀티 사용자 구현을 기반으로 공유 기기 경험을 제공합니다.

Automotive 사용자 유형

위에 나열된 사용자 유형 외에도 Automotive 빌드에서는 다음 사용자 유형을 살펴볼 필요가 있습니다.

  • 헤드리스 시스템 사용자 시스템 사용자는 모든 시스템 서비스를 호스팅합니다. Automotive에서 여러 사용자를 지원하려면 시스템 사용자도 헤드리스여야 합니다. 헤드리스 사용자는 한 명뿐입니다. 헤드리스 시스템 사용자는 다음과 같은 특징을 갖습니다.
    • 항상 백그라운드에서 실행해야 합니다.
    • 기기 프로비저닝의 경우를 제외하고는 사용자가 직접 삭제하거나 액세스할 수 없습니다. 예를 들어, 사용자는 앱 다운로드 또는 계정 추가와 같은 작업을 실행하기 위해 이 사용자 유형으로 전환할 수 없습니다.
    • 초기화를 통해서만 삭제할 수 있습니다.
  • 일반 사용자. 위에서 설명한 보조 사용자와 동일합니다. 단, 보조 사용자는 다음과 같은 점에서 일반 사용자와 다릅니다.
    • 백그라운드에서 실행되지 않습니다(전환된 이후).
    • 사용자 인터페이스를 통해 직접 생성할 수 있습니다.
    • 앱 데이터를 분리했지만 일부 시스템 차원 설정은 공유합니다. 예를 들어, Wi-Fi 및 블루투스 설정을 공유합니다.

주의사항

Automotive의 헤드리스 시스템 사용자 및 일반(보조) 사용자에게는 다음 예외가 적용됩니다.

  • 헤드리스 시스템 사용자는 직장 프로필을 지원하지 않습니다.
  • 기본적으로 일반(보조) 사용자는 전화 통화 및 문자에 대한 전체 액세스 권한을 갖습니다.
  • 기본적으로 일반(보조) 사용자는 백그라운드에서 실행되지 않습니다.

헤드리스 시스템 사용자 사용 설정

Android 10부터 멀티 사용자 기능을 Automotive 사용 사례에 사용할 수 있습니다. 중요한 특징은 다음과 같습니다.

  • 시스템 사용자는 헤드리스이며 백그라운드에서만 실행됩니다.
  • 인간 사용자는 시스템 사용자와 상호 작용하지 않습니다.

헤드리스 시스템 사용자를 사용 설정하려면 위에서 설명한 대로 기기 제조업체가 멀티 사용자를 사용 설정해야 합니다.

헤드리스 사용자가 사용 설정된 경우,
  1. 기기를 Automotive로 선언하려면 android.hardware.type.automotive 기능을 추가합니다.
  2. ro.fw.headless_system_usertrue로 설정합니다.
  3. config_multiuserMaximumUsers 값을 2 이상으로 설정합니다.

자세한 내용은 Automotive의 멀티 사용자 지원을 참조하세요.