Xiaomi에서 모의 위치: MIUI와 HyperOS
‘위치 변경을 켰는데 몇 분 뒤 모두 원래대로 돌아간다’는 불만은 거의 언제나 Xiaomi, Redmi, POCO 휴대전화에서 나옵니다. 원인은 앱이 아닙니다. MIUI와 HyperOS는 순정 Android보다 백그라운드 프로세스를 엄격하게 관리해, 위치 변경을 유지하는 서비스를 종료합니다. 아래에서 정확히 무슨 일이 일어나는지, 그리고 이를 해결하는 세 가지 설정을 설명합니다.
앱의 자동 시작 켜기
설정 → 앱 → 앱 관리 → Mock Location → ‘자동 시작’(일부 버전에서는 ‘백그라운드에서 실행’). 세 가지 설정 중 가장 중요합니다. 이것이 없으면 시스템이 프로세스를 종료한 뒤 되살리지 않아, 직접 앱을 열 때까지 위치 변경이 복원되지 않습니다.

배터리 제한 해제하기
같은 앱 화면에서 ‘배터리 세이버’ 또는 ‘활동 제어’를 찾아 ‘제한 없음’을 선택하세요. 이 모드에서는 펌웨어가 더 이상 백그라운드 서비스를 마음대로 재우지 않습니다.

최근 앱에서 고정하기
최근 앱 목록을 열고 Mock Location 카드를 아래로 당기면 자물쇠 아이콘이 나타납니다. 고정된 앱은 ‘X’로 목록을 지우거나 ‘모두 지우기’ 스와이프를 해도 닫히지 않습니다.

위치 변경이 유지되는지 확인하기
위치 변경을 켜고 앱을 최소화한 다음 휴대전화를 10~15분 동안 그대로 두세요. 그런 다음 확인하세요. 알림 창에 알림이 그대로 있어야 하고, 다른 지도 앱도 여전히 선택한 지점을 표시해야 합니다.

내부에서 일어나는 일
펌웨어가 앱의 프로세스를 종료합니다. 시스템 로그에는 시스템이 결정한 강제 종료로 나타납니다. 그 후 테스트 제공자는 마지막으로 기록된 값과 함께 Android에 등록된 채 남지만, 새 좌표를 기록하는 주체가 없습니다. 이를 만든 프로세스가 더 이상 없기 때문입니다.
겉으로는 ‘위치 변경이 멈춘’ 것처럼 보입니다. 좌표는 그대로이지만 갱신되지 않고, 얼마 후 시스템이 실제 위치를 돌려줍니다.
앱이 스스로 하는 일
펌웨어 설정과 관계없이 두 가지 복구 방식이 작동합니다. 첫째, 앱을 열면 저장된 상태와 실제 상태를 비교해 프로세스가 죽었으면 위치 변경을 되살립니다. 이 방법은 항상 작동합니다. 둘째, 감시 타이머가 백그라운드에서 주기적으로 상태를 확인하고 서비스를 스스로 되살리려고 합니다.
하지만 둘 다 한계가 있습니다. 펌웨어가 앱의 백그라운드 시작을 금지하면 사용자 없이는 서비스를 되살릴 수 없습니다. 그 순간에는 코드가 아예 실행되지 않기 때문입니다.
자동 시작이 다른 설정보다 중요한 이유
차이는 측정할 수 있습니다. 자동 시작이 꺼져 있으면 시스템은 프로세스를 종료한 뒤 서비스를 전혀 다시 시작하지 않으며, 복구는 사용자가 직접 앱을 열 때만 일어납니다. 자동 시작이 켜져 있으면 시스템이 종료된 서비스를 약 3초 만에 되살리고, 앱은 저장된 상태를 불러와 사용자 개입 없이 위치 변경을 계속합니다.
그러니 세 가지 설정 중 하나만 한다면 자동 시작을 켜세요.
재부팅 후 복구
켜져 있던 모의 위치는 휴대전화가 부팅될 때 가장 이른 시스템 이벤트를 이용해, 화면 잠금을 풀기 전에도 자동으로 복원됩니다. PIN을 쓰는 휴대전화에서 휴대전화를 집어 들기를 기다리지 않고 위치 변경을 되살리는 유일한 방법입니다.
실제 HyperOS 기기에서 측정해 보니 이것이 왜 중요한지 알 수 있었습니다. 이른 부팅 이벤트 대기열은 1초 남짓 만에 앱에 도착하지만, 일반 대기열은 17초가 걸립니다. 시스템 업데이터, 클라우드 서비스, 은행 앱이 대기열 앞에 있기 때문입니다.
다른 스킨의 같은 설정
Huawei(설정 → 배터리 → 앱 실행 → 앱의 자동 관리 끄기), Samsung(설정 → 배터리 및 디바이스 케어 → 배터리 → 백그라운드 사용 제한), OPPO, realme, vivo에서도 비슷한 일이 일어납니다. 이름은 달라도 원리는 같습니다. 앱이 백그라운드에서 실행되도록 허용하고 적극적인 배터리 절약 대상에서 제외하세요. 그래도 위치 변경이 끊긴다면 흔한 원인 정리를 참고하세요.