온디바이스 개발자 옵션 구성

Android의 설정 앱에는 개발자 옵션이라는 화면이 있습니다. 이 화면에서 앱 성능 프로파일링과 디버깅을 도와주는 시스템 동작을 구성할 수 있습니다. 예를 들어, USB를 통한 디버깅 사용 설정, 버그 신고 캡처, 탭한 항목의 시각적 피드백 사용 설정, 창 노출 영역이 업데이트될 때 깜박임 표시, 2D 그래픽 렌더링에 GPU 사용 등 다양한 작업을 실행할 수 있습니다.

개발자 옵션 사용 설정

Android 4.1 이하에서는 개발자 옵션 화면을 기본적으로 사용할 수 있습니다. Android 4.2 이상에서는 이 화면을 사용 설정해야 합니다.

참고: 일부 기기에서는 개발자 옵션 화면의 위치나 이름이 다를 수도 있습니다.

  1. 기기에서 빌드 번호 옵션을 찾습니다. 다음 표는 다양한 기기에서 빌드 번호 설정 위치를 보여줍니다.

    표 1. 빌드 번호 옵션의 기기 설정 위치

    기기 설정

    Google Pixel

    설정 > 휴대전화 정보 > 빌드 번호

    삼성 Galaxy S8 이상

    설정 > 휴대전화 정보 > 소프트웨어 정보 > 빌드 번호

    LG G6 이상

    설정 > 휴대전화 정보 > 소프트웨어 정보 > 빌드 번호

    HTC U11 이상

    설정 > 정보 > 소프트웨어 정보 > 더보기 > 빌드 번호 또는 설정 > 시스템 > 휴대전화 정보 > 소프트웨어 정보 > 더보기 > 빌드 번호

    OnePlus 5T 이상

    설정 > 휴대전화 정보 > 빌드 번호

  2. You are now a developer! 메시지가 표시될 때까지 빌드 번호 옵션을 일곱 번 탭합니다. 그러면 기기에서 개발자 옵션이 사용 설정됩니다.

  3. 이전 화면으로 돌아가 하단에서 개발자 옵션을 찾습니다.

그림 1. 온디바이스 개발자 옵션

그림 1과 같이 개발자 옵션 화면 상단에서 옵션을 켜거나 끌 수 있습니다. 계속 켜 두세요. 옵션이 꺼진 경우 기기와 개발용 컴퓨터 간에 통신이 필요 없는 옵션을 제외한 대부분의 옵션이 사용 중지됩니다.

기기에서 USB 디버깅 사용 설정

디버거 및 기타 도구를 사용하기 전에 USB 디버깅을 사용 설정해야 합니다. 이를 사용하면 기기가 USB를 통해 연결될 때 Android 스튜디오와 기타 SDK 도구에서 기기를 인식할 수 있습니다.

기기 시스템 설정의 개발자 옵션 아래에서 USB 디버깅을 사용 설정합니다. Android 버전에 따라 다음 위치 중 한 곳에서 이 옵션을 확인할 수 있습니다.

  • Android 9(API 수준 28) 이상: 설정 > 시스템 > 고급 > 개발자 옵션 > USB 디버깅
  • Android 8.0.0(API 수준 26) 및 Android 8.1.0(API 수준 27): 설정 > 시스템 > 개발자 옵션 > USB 디버깅
  • Android 7.1(API 수준 25) 이하: 설정 > 개발자 옵션 > USB 디버깅

일반 옵션

빠른 설정 개발자 타일을 탭하여 선택한 개발자 옵션을 빠른 설정 패널에 추가합니다.

그림 2와 같이 사용 가능한 타일을 하나 이상 선택한 후 '빠른 설정' 패널을 열고 연필을 탭하여 수정 모드로 전환합니다. 그런 다음, 타일 창에 있는 개발자 타일을 '빠른 설정' 패널로 드래그하고 연필을 다시 탭하여 수정 모드를 종료합니다.

그림 2. '빠른 설정' 패널에 옵션을 추가합니다.

기타 일반 옵션에는 다음 항목이 포함됩니다.

  • 메모리: 평균 메모리 사용량, 메모리 성능, 사용 가능한 총 메모리, 사용된 메모리 평균, 사용 가능한 여유 메모리 크기, 앱에서 사용 중인 메모리 크기 등 메모리 통계를 표시합니다.
  • 버그 신고: 다른 사람과 공유할 현재 기기 로그 파일 사본을 가져옵니다. 버그 신고가 준비되었다는 알림을 받으면 이 알림을 탭하여 버그 신고를 공유합니다.
  • 시스템 UI 데모 모드: 알림이나 배터리 부족 경고가 나타나지 않도록 미리 설정한 일반 알림바를 표시하여 더 쉽게 깔끔한 스크린샷을 찍을 수 있습니다. 데모 모드 사용에서는 adb 데모 모드 명령어를 사용하여 상태 표시줄의 모양을 변경할 수 있습니다. 또는 데모 모드 표시를 사용하여 알림을 숨기고 미리 설정한 상태 표시줄을 표시할 수 있습니다.
  • 데스크톱 백업 비밀번호: 기기 앱과 데이터를 비밀번호로 보호하여 백업 및 복원하는 adb 명령어를 사용할 수 있도록 백업 비밀번호를 설정합니다.
  • 절전모드 해제: 기기 전원이 연결되어 있는 동안 화면이 켜져 있도록 설정합니다.
  • 블루투스 HCI 스누프 로그 사용: 모든 블루투스 HCI 패킷을 하나의 파일에 캡처하여 /sdcard/btsnoop_hci.log에 저장합니다. 패킷을 검색하고 Wireshark 같은 프로그램을 사용하여 정보를 분석하고 문제를 해결할 수 있습니다.

디버깅

그림 3. 디버깅 옵션 사용 설정됨

디버깅 옵션을 사용하여 온디바이스 디버깅을 구성하고 기기와 개발용 컴퓨터 간에 통신을 설정할 수 있습니다.

그림 3과 같이 USB 디버깅을 사용 설정하면 Android 기기가 Android 디버그 브리지(adb)를 통해 개발 머신과 통신할 수 있습니다. 디버거 연결을 위해 대기 옵션은 디버깅할 앱 선택을 사용하여 디버깅할 앱을 선택한 후에만 사용할 수 있습니다. 디버거 연결을 위해 대기 옵션을 사용 설정하면 선택한 앱은 실행 전에 디버거 연결을 위해 대기합니다.

기타 디버깅 옵션에는 다음 항목이 포함됩니다.

  • 로거 데이터를 기기에 영구 저장: 기기에 영구적으로 저장하려는 로그 메시지의 유형을 선택합니다. 옵션으로는 '사용 안함', '모두', '라디오 외 모두', '커널만'이 있습니다.
  • 가상 위치 앱 선택: 이 옵션을 사용하면 다른 위치에서 앱이 동일하게 동작하는지 여부를 테스트하기 위해 기기의 GPS 위치를 가상으로 만들 수 있습니다. 이 옵션을 사용하려면 GPS 가상 위치 앱을 다운로드하여 설치합니다.
  • 그림 4. 뷰 속성

  • 보기 속성 검사 사용: 디버깅에 사용할 수 있도록 보기 속성 정보를 View 인스턴스의 mAttributes 멤버 변수에 저장합니다. 그림 4와 같이 Layout Inspector 사용자 인터페이스를 통해 속성 정보에 액세스할 수 있습니다. 사용 설정하지 않으면 **Attributes** 항목을 사용할 수 없습니다.
  • GPU 디버그 레이어 사용 설정: Android 9(API 수준 28) 이상을 실행하는 기기에서 사용할 수 있는 옵션입니다. 이 옵션을 사용 설정하면 로컬 기기 저장소에서 Vulkan 유효성 검사 계층을 로드할 수 있습니다. 자세한 내용은 Android의 Vulkan 유효성 검사 계층을 참고하세요.

네트워킹

그림 5. USB 구성 옵션 선택

네트워킹 옵션을 사용하여 Wi-Fi 및 DHCP 설정을 구성할 수 있습니다.

컴퓨터에서 기기 식별 방법을 지정하려면 USB 설정 선택을 탭합니다. 그림 5에서 보는 것처럼 충전 전용으로 기기를 구성하거나, 파일 전송(MTP), 사진 전송(PTP), PC에서 모바일 인터넷 사용(RNDIS), 오디오 또는 MIDI 파일 전송을 위해 기기를 구성할 수 있습니다.

블루투스 AVRCP 버전을 탭한 후 사용하려는 프로필 버전을 선택하면 기기에서 액세스 가능한 블루투스 A/V 장비를 제어할 수 있습니다.

또한 기기의 오디오 재생을 미세 조정하려면 다음 옵션을 탭하고 설정합니다.

  • 블루투스 오디오 코덱: 다음 코덱 중 하나를 선택하여 기기의 음질(코덱)을 조정합니다.
    • SBC: 헤드폰, 스피커와 같은 블루투스 오디오 출력 장치로 데이터를 전송합니다.
    • AAC: 비슷한 비트 전송률에서 MP3보다 더 나은 유선 기기의 음질을 제공합니다.
    • aptX: 고품질의 스마트폰, 스피커, 사운드바, 헤드폰 및 태블릿에서 무선 사운드를 제공합니다.
    • aptX HD: 블루투스 기기에 고해상도 스트리밍을 제공합니다.
    • LDAC: 무선 연결을 통해 높은 음질로 음악을 청취할 수 있도록 합니다.
  • 선택 코덱 사용 설정선택 코덱 사용 중지: 추가로 구현된 코덱이 설치된 경우 이 옵션을 사용하여 코덱을 사용 설정하거나 중지합니다.
  • 블루투스 오디오 샘플 범위: 오디오 코덱 샘플링 레이트를 선택하여 초당 오디오 샘플 수를 조정합니다. 샘플링 레이트가 높을수록 더 많은 리소스를 사용합니다.
  • 블루투스 오디오 샘플당 비트: 각 오디오 샘플 정보의 비트 수를 설정합니다. 비트 전송률이 높을수록 음질은 더 좋지만 샘플 파일이 더 커집니다.
  • 블루투스 오디오 채널 모드: 모노, 스테레오 중에서 선택합니다.
  • 블루투스 오디오 LDAC 코덱: 사운드를 최적화하여 음질을 개선하고, 오디오와 연결 품질 간의 균형을 유지하고, 연결 품질을 개선하거나 또는 비트 전송률 자동 조절을 사용하여 오디오와 연결 품질 간의 균형을 유지합니다.

다음 목록에는 다른 방식으로 Wi-Fi 및 DHCP 설정을 구성하는 방법이 설명되어 있습니다.

  • 무선 디스플레이 인증서: Wi-Fi Alliance Wi-Fi 디스플레이 사양에 규정된 사양에 맞춰 무선 디스플레이 인증서의 제어 및 설정을 고급 구성으로 사용합니다.
  • Wi-Fi 상세 로깅 사용: 연결되는 각 무선 네트워크(SSID)의 상대 수신 신호 강도(RSSI)에 따라 SSID의 Wi-Fi 로깅 수준을 증가시킵니다. 로그에 관한 자세한 내용은 Logcat으로 로그 쓰기 및 보기를 참조하세요.
  • 적극적인 Wi-Fi-셀룰러 핸드오버: 이 옵션을 사용하면 신호가 약할 때 Wi-Fi에서 보다 효율적으로 데이터 연결을 셀룰러 네트워크에 넘겨줄 수 있습니다.

입력

탭한 항목 표시를 사용 설정하면 화면을 터치할 때 탭한 항목이 나타납니다. 손가락이나 스타일러스 아래에 원이 나타나며, 화면에서 손가락이나 스타일러스를 움직이면 원도 따라 움직입니다. 기기에서 동영상을 녹화할 때는 탭 동작이 포인터처럼 작동합니다.

그림 6. 포인터 위치 표시줄

포인터(탭) 위치를 기기상에 십자선으로 표시하려면 포인터 위치를 사용 설정합니다. 그림 6과 같이 십자선 좌표를 추적하는 막대가 화면 상단에 나타납니다. 포인터를 움직이면 이 막대의 좌표가 십자선의 위치를 추적하며 포인터 경로가 화면에 그려집니다.

그리기

그림 7. 사용자 인터페이스 구조

그리기 옵션에서는 앱의 사용자 인터페이스가 시각적으로 어떻게 표현될지 확인하고 인터페이스 작동 방식도 볼 수 있습니다.

레이아웃 범위 표시를 사용 설정하면 앱의 클리핑 경계, 여백, 기타 사용자 인터페이스 구조가 기기에 표시됩니다(그림 7 참고).

기타 그리기 옵션에는 다음 항목이 포함됩니다.

  • RTL 레이아웃 방향 강제 적용: 화면 레이아웃 방향을 오른쪽에서 왼쪽(RTL) 또는 왼쪽에서 오른쪽(기본값)으로 강제 설정합니다.
  • 창 애니메이션 배율: 다양한 속도에서 성능을 확인할 수 있도록 창 애니메이션 재생 속도를 설정합니다. 배율이 낮을수록 속도는 더 빨라집니다.
  • 전환 애니메이션 배율: 다양한 속도에서 성능을 확인할 수 있도록 전환 애니메이션 재생 속도를 설정합니다. 배율이 낮을수록 속도는 더 빨라집니다.
  • 보조 디스플레이 시뮬레이션: 기기에서 오버레이로 표시되도록 보조 디스플레이를 생성합니다. 이 기능은 Presentation API로 추가적인 디스플레이를 지원할 때 유용합니다. 자세한 내용은 보조 디스플레이를 참고하세요.

하드웨어 가속 렌더링

그림 8. 녹색약 색상 공간

하드웨어 가속 렌더링 옵션을 사용하면 GPU, 하드웨어 레이어, 멀티샘플 앤티앨리어싱(MSAA)과 같은 하드웨어 기반 옵션을 활용하여 타겟 하드웨어 플랫폼에 맞게 앱을 최적화할 수 있습니다.

전체 기기 UI의 색 구성표를 변경하려면 색상 공간 시뮬레이션을 탭합니다. 이 옵션은 색맹의 유형을 나타냅니다. 선택할 수 있는 옵션은 다음과 같습니다.

  • 사용 중지됨(시뮬레이션된 색 구성표 없음)
  • 전색맹(색 구성표를 검은색, 흰색, 회색으로 제한)
  • 녹색약(빨간색 및 녹색 표시에 영향을 줌)
  • 적색약(빨간색 및 녹색 표시에 영향을 줌)
  • 청색약(파란색 및 노란색 표시에 영향을 줌)
적색약은 빨강이 잘 안 보이는 빨강-초록 색맹을 말하며, 그림 8의 녹색약은 녹색이 잘 안 보이는 빨강-초록 색맹을 말합니다.

시뮬레이션된 색상 공간에서 스크린샷을 찍으면, 마치 색 구성표를 바꾸지 않은 것처럼 스크린샷이 정상적으로 나타납니다.

하드웨어 기반 옵션을 활용하는 몇 가지 다른 방법은 다음과 같습니다.

  • GPU 렌더기 설정: 기본 Open GL 그래픽 엔진을 Open GL Skia 그래픽 엔진으로 변경합니다.
  • GPU 렌더링 강제 설정: 기본적으로 GPU 렌더링 없이 앱이 작성되었다면, 앱에서 2D 그리기에 GPU를 사용하도록 강제 설정합니다.
  • GPU 보기 업데이트 표시: GPU를 사용하여 그려진 모든 화면 요소를 표시합니다.
  • GPU 오버드로 디버그: 동일한 픽셀이 동일 프레임 내에 그려진 횟수를 시각화할 수 있도록 기기에 색 구분을 표시합니다. 시각화를 사용하면 앱이 필요 이상으로 렌더링을 많이 실행하는 부분을 표시할 수 있습니다. 자세한 내용은 GPU 오버드로 시각화를 참고하세요.
  • 사각형이 아닌 클립 작업 디버그: 캔버스에서 클리핑 영역을 사용 중지하여 사각형이 아닌 특이한 형태의 캔버스 영역을 만들 수 있도록 합니다. 클리핑 영역을 사용할 때는 일반적으로 원형의 클리핑 영역 경계 밖에 아무것도 그릴 수 없습니다.
  • 4x MSAA 강제 사용: Open GL ES 2.0 앱에서 멀티샘플 안티앨리어싱(MSAA)을 사용 설정합니다.
  • HW 오버레이 사용 안함: 하드웨어 오버레이를 사용 중지합니다. 하드웨어 오버레이를 사용하면 화면에 무언가를 표시하는 각 앱에서 소모하는 처리 성능을 줄일 수 있습니다. 오버레이를 사용하지 않는 경우 앱은 비디오 메모리를 공유하며 적절한 이미지를 렌더링하기 위해 충돌이나 클리핑이 있는지 지속적으로 확인해야 합니다. 이 확인 작업에는 상당한 처리 성능이 사용됩니다.

미디어

USB 포트를 통해 컴퓨터에 연결된 외부 오디오 기기로 자동 라우팅되지 않도록 하려면 USB 오디오 연결 사용 중지를 설정합니다. 자동 라우팅은 USB를 인식하는 앱을 방해할 수 있습니다.

Android 11 이상에서는 RECORD_AUDIO 권한이 없는 애플리케이션이 UsbManager를 사용하여 오디오 캡처 기능이 있는 USB 오디오 기기(예: USB 헤드셋)에 직접 액세스를 요청하면 사용자에게 기기 사용 권한을 확인하는 경고 메시지가 표시됩니다. 시스템은 '항상 사용' 옵션을 무시하므로 사용자는 앱에서 액세스를 요청할 때마다 경고를 확인하고 권한을 부여해야 합니다. 이러한 동작을 피하려면 앱에서 RECORD_AUDIO 권한을 요청해야 합니다.

모니터링

그림 9. 막대로 표시된 GPU 렌더링 프로필

모니터링 옵션을 사용하면 스레드가 긴 작업 및 GPU 작업과 같은 앱 성능에 관한 시각적 정보를 확인할 수 있습니다.

그림 9와 같이 프로필 GPU 렌더링을 탭한 후 화면에 막대로 표시를 탭하여 GPU 렌더링 프로필을 막대로 표시합니다. 자세한 내용은 GPU 렌더링 속도 프로파일링을 참고하세요.

그림 10. 백그라운드 프로세스 제한 설정

앱 옵션은 대상 기기에서 앱이 어떻게 작동하는지 이해하도록 도와줍니다.

백그라운드에서 한 번에 실행할 수 있는 프로세스 수를 설정하려면 백그라운드 프로세스 수 제한을 탭합니다. 가능한 설정이 그림 10에 나타나 있습니다.

테스트 도중에 ShortcutManager 대역 제한 기능 재설정을 탭하면 백그라운드 앱이 대역 제한에 다시 도달할 때까지 계속해서 단축키 API를 호출할 수 있습니다. 단축키와 대역 제한에 대한 자세한 내용은 ShortcutManager를 참조하세요.

활동 유지 안함을 사용하면 사용자가 활동의 기본 뷰에서 벗어나자마자 모든 활동을 소멸하여 배터리 수명을 늘릴 수 있습니다.