Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

버그 신고

Google에서 버그를 수정하고 싶어도 상당수 버그에는 필요한 정보가 포함되어 있지 않습니다. 따라서 필요한 정보를 모두 포함하여 신고된 버그에만 제한된 리소스를 집중하고 있습니다. 버그가 수정될 확률을 높이려면 잠시 시간을 내어 이 문서를 읽어 보세요.

이 단계를 따르지 않으면 버그가 종결 처리됩니다. 그런 경우에는 정보를 더 추가하여 다시 제출하시면 됩니다.

또한 Issue Tracker는 지원 포럼이 아님에 유의하세요. 도구 사용 방법이나 Android 앱의 작동 방식에 관한 질문이 있으시면 stackoverflow.com을 방문하거나 여러 Android 개발자 지원 리소스 중 하나를 방문하세요.

버그 신고 방법

  1. 최신 버전의 도구를 사용 중인지 확인합니다. Google에서는 이미 수정된 버그를 검토하는 데 많은 시간을 보내고 있습니다. 문제가 종결 처리되었지만 해결되지 않은 경우, 최신 버전을 사용하여 재현 가능하다면 또 다른 이슈를 열어 주세요.

  2. Android 스튜디오에서 Help > Submit Feedback을 선택하여 버그 신고를 엽니다. 이는 버그를 시작하는 가장 쉬운 방법입니다. 사용 중인 Android 스튜디오 버전, 자바 버전, 시스템 정보가 버그 신고에 채워지므로 문제를 제대로 재현하는 데 필요한 정보를 확보할 수 있습니다. 아니면 여기에 버그를 제출하고 직접 버전 정보를 추가합니다.

  3. 정확한 재현 단계를 설명합니다. 최초 시도에서 문제를 재현할 수 있다면 수정 가능성은 훨씬 더 높아집니다. 가능한 경우 코드 스니펫을 포함하세요(또는 버그 재현에 사용할 수 있는 github 프로젝트를 알려주시면 더 좋습니다). 또한 화면의 내용을 보여주는 스크린샷도 도움이 됩니다.

  4. 예상했던 것과 실제로 보이는 것을 비교하여 설명합니다.

  5. 버그에 관한 요약 설명을 선택합니다. 문제를 분류하기 어렵게 만드는 'Bug', 'Issue', 'Exception', 'Not working' 등의 요약 설명으로 제출되는 버그가 얼마나 많은지 알게 되면 놀라실 것입니다.

  6. 어떤 종류의 버그는 추가 정보가 필요합니다.

Android 스튜디오 버그의 경우 세부정보

Android 스튜디오 버그에 특정한 다음과 같은 추가 정보를 포함합니다.

IDE가 멈추는 경우

IDE 자체가 매우 느려지거나 완전히 멈춰버리면 스레드 덤프를 몇 개 생성하여 버그 신고에 첨부합니다. 그러면 IDE가 무엇 때문에 그렇게 바쁜지(또는 IDE가 어떤 리소스를 경합 중인지) 알 수 있습니다.

IDE가 느리지만 멈추지 않은 경우 idea.log 파일도 첨부합니다(Help > Show Log in Finder 선택). 그러면 IDE가 느려진 이유가 로그에 지속적으로 오류를 발생시키기 때문인지 알 수 있습니다.

IDE에서 메모리가 부족한 경우

Android 스튜디오의 메모리 문제는 때때로 재현하고 신고하기 어렵습니다. 이 문제를 해결하는 데 도움이 되도록 Android 스튜디오에는 메모리 사용량 보고서가 포함되어 있으며, 이 보고서를 Android 스튜디오팀에 보내 메모리 문제의 원인을 식별하는 데 도움을 줄 수 있습니다.

메모리 사용량 보고서 실행

메모리 사용량 보고서를 실행하려면 다음 단계를 따르세요.

  1. 메뉴 바에서 Help > Analyze Memory Usage를 클릭합니다.

    Android 스튜디오에서 힙을 덤프하고 IDE를 다시 시작하라는 메시지를 표시합니다. IDE를 다시 시작하면 힙 덤프 분석이 즉시 시작됩니다. 즉시 시작되지 않으면 힙 덤프 분석은 다음에 Android 스튜디오를 실행할 때 시작됩니다. 두 경우 모두 메모리 사용량 보고서를 검토할 준비가 되면 IDE에서 알려줍니다.

    메모리 사용량 보고서를 검토할 준비가 되었다고 나타내는 알림

  2. Review Report를 클릭합니다.

    보고서를 보내기 전에 포함된 모든 정보를 검토할 수 있습니다.

    메모리 사용량 보고서

  3. 검토를 완료한 후 보고서 콘텐츠를 복사하여 파일에 붙여넣고 버그를 신고할 때 이 파일을 첨부합니다.

    이렇게 보고서 정보를 제출하면 Android 스튜디오팀이 메모리 문제를 조사하는 동안 Issue Tracker를 사용하여 개발자와 소통할 수 있습니다.

IDE가 비정상 종료되거나 예외를 발생시키는 경우

다른 유형의 비정상 종료는 idea.log 파일을 첨부하세요. Help > Show Log in Finder를 선택합니다.

스레드 덤프 생성

스레드 덤프는 JVM에서 실행 중인 모든 스레드의 출력이며 각 스레드의 경우 모든 스택프레임의 출력입니다. 이를 통해 IDE가 진행 중인 작업을 쉽게 알 수 있습니다. 특히 몇 개의 스레드 덤프가 몇 초 차이로 생성되는 경우에 쉽게 확인할 수 있습니다.

CPU가 느려지고 IDE가 매우 바쁜 버그나 IDE가 멈추는 듯한 버그의 경우, 스레드 덤프를 통해 어떤 코드에서 많은 작업이 진행 중인지 또는 어떤 스레드가 리소스를 경합 중이며 교착 상태를 유발하는지 정확히 찾아낼 수 있습니다.

JDK에서는 'jstack'이라는 도구가 제공되며 이 도구를 사용하여 스레드 덤프를 생성할 수 있습니다. 먼저, Android 스튜디오 프로세스의 프로세스 ID를 찾아야 합니다. 이를 위해 'jps' 명령어를 사용할 수 있습니다. jstack과 jps는 모두 JDK의 bin 디렉터리에 있습니다. 여러 개의 JDK가 설치된 경우, Android 스튜디오를 실행하는 것과 동일한 버전을 여기에서 사용해야 하며 이 버전은 Android 스튜디오의 About 상자에서 확인할 수 있습니다.

Linux, Mac의 경우:

jps -mv | grep studio
    

Windows의 경우:

jps -mv | findstr studio
    

예를 들어, 이 경우 다음과 같은 긴 줄이 출력됩니다.

$ jps -mv | grep studio
    37605 -Dfile.encoding=UTF-8 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djna.nosys=true ...
    

왼쪽의 첫 번째 숫자(이 경우 37605)는 프로세스 ID입니다.

그런 다음, 스레드 덤프를 생성하고 dump.txt라는 파일에 저장할 수 있습니다.

jstack -l pid >> dump.txt
    

이 명령이 작동하지 않는 경우 스레드 덤프를 생성할 수 있는 플랫폼별 방법이 몇 가지 더 있습니다. 자세한 내용은 IntelliJ 지원을 참조하세요.

빌드 도구 및 Gradle 버그의 경우 세부정보

프로젝트 빌드 시에 발생하는 문제나 Gradle 동기화 문제에 특정한 다음과 같은 정보를 포함합니다.

  • Gradle 버전. File > Project Structure를 선택하고 Project를 클릭한 후 Gradle version을 찾습니다.
  • Android 플러그인 버전. Gradle 버전과 동일한 페이지에서 Android Plugin Version을 찾습니다.
  • Module Compile SDK 버전. 위 페이지의 왼쪽 창에서 모듈을 선택하고 Compile Sdk Version을 찾습니다.
  • Module Build Tools 버전. 위 페이지에서 Build Tools Version을 찾습니다.
  • Android SDK Tools 버전. Tools > SDK Manager를 선택하고 SDK Tools를 클릭한 후 Android SDK Tools를 찾습니다.

Android 에뮬레이터 버그의 경우 세부정보

에뮬레이터 세부정보를 수집하는 가장 쉬운 방법은 확장 컨트롤에서 File a bug 기능을 사용하는 것입니다.

  1. 에뮬레이터 패널에서 More 를 클릭합니다.
  2. Extended controls 창에서 왼쪽에 있는 Bug report를 선택합니다.

    스크린샷, AVD 구성 정보, 버그 신고 로그와 같은 버그 신고 세부정보를 볼 수 있는 화면이 열립니다. 재현하는 단계를 여기에서 입력할 수 있으며, 기다렸다가 다음 단계에서 생성되는 보고서에 재현 단계를 입력할 수도 있습니다.

  3. 버그 신고의 정보 수집이 완료될 때까지 기다린 후 Send to Google을 클릭합니다. 버그 신고를 폴더에 저장할 수 있는 창이 열리고, 그런 다음 신고를 생성할 수 있도록 브라우저에서 필수 에뮬레이터 세부정보가 채워진 상태로 Google Issue Tracker가 열립니다.

  4. 신고에서 버그 재현 단계와 같은 나머지 세부정보를 작성한 후 버그 신고를 생성할 때 저장된 파일을 첨부합니다.

아니면 다음 세부정보를 수동으로 입력해야 합니다.

  • 에뮬레이터 버전. 에뮬레이터에서 Extended controls를 열고 Help를 클릭한 후 About 탭을 클릭하여 Emulator version을 찾습니다.
  • Android SDK Tools 버전. Tools > SDK Manager를 선택하고 SDK Tools를 클릭한 후 Android SDK Tools를 찾습니다.
  • 호스트 CPU 모델.
    • Linux의 경우: /proc/cpuinfo를 엽니다.
    • Windows의 경우: My Computer(내 컴퓨터)를 마우스 오른쪽 버튼으로 클릭하고 Properties(속성)를 선택합니다.
    • Mac의 경우: Apple 아이콘을 클릭하고 About This Mac(이 Mac에 관하여)을 클릭합니다.
  • 기기 이름. AVD Manager에서 기기에 맞는 Actions 열의 드롭다운 메뉴를 클릭하여 열고 View Details를 선택합니다(또는 $avdname.avd/config.ini 파일 열기). hw.device.name의 항목을 찾습니다. 예: hw.device.name=Nexus 5