기기 소유자 모드
컴퓨터로 한 번 설정해 두면 clear_data가 설정 화면을 열지 않고 앱 데이터를 바로 지웁니다. 켜는 법, 확인하는 법, 끄는 법과 그 대가를 정리합니다.
번역된 페이지입니다. 영어 문서와 내용이 다르면 영어 문서가 기준입니다. English
일반 앱은 다른 앱의 데이터를 직접 지울 수 없습니다. 그래서 이 모드가 아니면 clear_data는 권한 device_owner와 함께 NO_PERMISSION으로 답합니다. 설정 앱의 버튼을 누르는 데이터 삭제 레시피로 지울 수는 있지만, 몇 초가 걸리고 그동안 화면에 설정 앱이 보이며, 폰의 버튼 이름에 따라 맞춰야 합니다.
Droidline을 폰의 기기 소유자(Device Owner)로 지정하면 이 제한이 풀립니다. 안드로이드가 기기 소유자 앱에게 다른 앱의 데이터를 지우는 기능을 열어 주기 때문입니다. 그러면 clear_data가 화면을 건드리지 않고 바로 지웁니다.
이 모드는 선택 사항입니다. 켜지 않아도 Droidline의 다른 기능은 모두 그대로 동작합니다.
바뀌는 것
| 기본 | 기기 소유자 모드 | |
|---|---|---|
clear_data | NO_PERMISSION(device_owner)으로 답함. 대신 설정 앱 레시피 사용 | 화면 없이 바로 지움 |
| 접근성 서비스 | 설정 앱 레시피에 필요 | clear_data에는 필요 없음 |
| Chrome처럼 공간 관리 화면이 있는 앱 | 설정 앱 레시피로는 지울 수 없음 | 지워짐 |
| Droidline 앱 삭제 | 평소처럼 가능 | 모드를 끄기 전에는 불가능 |
다른 명령은 바뀌지 않습니다. Droidline은 기기 소유자가 쓸 수 있는 다른 기능(정책, 앱 설치 제한 등)은 쓰지 않습니다.
언제 쓰면 좋은가
- 테스트용 폰 여러 대에서 앱 데이터를 자주 지울 때.
- 설정 앱 화면이 잠깐 뜨는 것도 방해가 될 때.
- 설정 앱 레시피가 제조사의 설정 앱과 맞지 않을 때.
개인용 폰이라면 굳이 켤 필요가 없습니다. 아래 조건 때문에 준비가 번거롭습니다.
시작하기 전에
- Android 9 이상.
- 폰에 Droidline 앱이 설치되어 있어야 합니다.
- 컴퓨터에
adb가 있어야 합니다. Android SDK Platform-Tools에 들어 있습니다. 설정할 때 한 번만 씁니다. - 폰에 계정이 하나도 없어야 합니다. 구글 계정뿐 아니라 텔레그램, 삼성 계정처럼 설정 → 계정에 보이는 모든 계정이 해당됩니다. 안드로이드가 정한 조건입니다. 계정은 설정을 마친 뒤 다시 추가해도 됩니다.
- 사용자가 한 명이어야 합니다. 게스트, 추가 사용자, 업무 프로필이 있으면 먼저 지우세요.
계정을 지우기 어렵다면, 공장 초기화한 뒤 계정을 추가하기 전에 설정하는 방법이 가장 간단합니다.
켜기
1. USB 디버깅을 켭니다. 설정 → 휴대전화 정보에서 빌드 번호를 일곱 번 누르면 개발자 옵션이 생깁니다. 거기서 USB 디버깅을 켜세요.
2. 폰을 USB로 연결하고, 폰에 뜨는 허용 창에서 허용을 누릅니다. 연결됐는지 확인합니다.
adb devices
3. Droidline을 기기 소유자로 지정합니다.
adb shell dpm set-device-owner dev.droidline.agent/.admin.DroidAdminReceiver
성공하면 이렇게 나옵니다.
Success: Device owner set to package dev.droidline.agent/.admin.DroidAdminReceiver
Active admin set to component dev.droidline.agent/.admin.DroidAdminReceiver
4. 정리합니다. 이제 USB 디버깅은 꺼도 됩니다. 지웠던 계정이 있다면 다시 추가하세요.
확인하기
폰의 Droidline 앱을 열고 상태 탭 맨 아래를 보면 기기 소유자 모드 항목이 있습니다. 이 항목은 모드가 켜져 있을 때만 보입니다.
초기화해도 괜찮은 앱에 clear_data를 불러 봐도 됩니다. NO_PERMISSION 대신 걸린 시간을 돌려줍니다.
print(d.clear_data("com.android.chrome"))
# {'ms': 915}console.log(await d.clearData("com.android.chrome"));
// { ms: 915 }Console.WriteLine(await d.ClearDataAsync("com.android.chrome"));
// {"ms":915}droidline --json clear_data com.android.chromems는 폰마다 다릅니다. Droidline 앱 자신의 데이터는 이 방식으로 지울 수 없습니다. 페어링 정보까지 사라지기 때문이며, 호출하면 BAD_ARGS로 답합니다.
3단계에서 실패할 때
| 메시지에 있는 말 | 뜻 | 해결 |
|---|---|---|
already some accounts on the device | 폰에 계정이 남아 있음 | 설정 → 계정에서 모든 계정을 지우고 다시 실행 |
already several users on the device | 다른 사용자나 업무 프로필이 있음 | 추가 사용자와 업무 프로필을 지우고 다시 실행 |
device owner is already set | 다른 앱이 이미 기기 소유자임 | 회사에서 관리하는 폰이면 쓸 수 없음. 아니면 그 앱에서 해제 |
Unknown admin | 앱이 없거나 이 기능이 없는 예전 버전 | Droidline 앱을 최신 버전으로 설치 |
끄기
폰의 Droidline 앱에서 상태 탭 → 기기 소유자 모드 → 끄기를 누르고 확인하세요. 그 뒤로 clear_data는 다시 NO_PERMISSION으로 답하고, 앱도 평소처럼 삭제할 수 있습니다. 다시 켜려면 위의 켜기를 처음부터 하면 됩니다.
공장 초기화를 해도 모드가 꺼집니다.