앱 최적화를 사용 설정한 후 앱이 의도한 대로 작동하고 R8 구성이 예상대로 작동하는지 확인합니다. 일반적인 단계는 다음과 같습니다.
- 앱의 중요한 사용자 여정 (CUJ) 테스트: 예를 들어 사용자가 로그인하고 다른 중요한 작업을 할 수 있는지 확인합니다.
- 벤치마크를 사용하여 성능 향상 측정: 앱 최적화를 사용 설정하기 전후에 앱을 벤치마킹합니다.
문제가 발견되면 R8에서 문제 해결에 도움이 되는 도구를 제공합니다. R8 관련 문제를 해결할 수 없는 경우 버그를 신고하세요.
일반적인 도움말
R8 관련 문제는 앱마다 고유한 경우가 많지만 다음은 디버깅을 더 쉽게 하는 데 도움이 되는 몇 가지 일반적인 도움말입니다.
- 난독화를 일시적으로 사용 중지: R8은 최적화 프로세스의 일환으로 코드를 난독화합니다. 난독화는 일반적으로 오류의 원인이 아니지만 난독화로 인해 오류를 디버그하기가 더 어려워집니다. 문제가 있는 코드를 정확하게 파악할 수 있도록 keep 규칙 파일에
‑dontobfuscate
및‑dontoptimize
플래그를 추가합니다. 반사 확인: 다음과 같은 no such element 예외가 발생하면
Caused by: java.util.NoSuchElementException: Collection contains no element matching the predicate in the stack trace
,이 예외는 일반적으로 해당 필드가 리플렉션을 통해 사용되고 있으므로 유지 규칙을 추가해야 함을 의미합니다.
바이트 코드 검사: 대부분의 R8 문제에는 바이트 코드 검사가 필요하며 이는 APK Analyzer와 같은 도구로 할 수 있습니다.
적용된 규칙 확인하기
프로젝트를 빌드할 때 R8이 적용하는 모든 규칙의 전체 보고서를 출력하려면 앱의 모듈 proguard‑rules.pro
파일에 다음을 포함하세요.
-printconfiguration <output-dir>/<report-name>.txt
경로와 파일 이름을 지정할 수 있습니다. 경로 또는 파일 이름을 지정하지 않으면 R8은 <module-name>/build/outputs/mapping/<build-type>/configuration.txt
에 규칙 보고서를 출력합니다.
코드가 유지된 이유 이해
삭제될 것으로 예상했던 코드가 유지된 경우 구성 옵션 ‑whyareyoukeeping
를 사용하여 코드가 유지된 이유를 파악하세요. R8은 보관된 코드에서 앱의 진입점 중 하나로의 경로를 출력합니다. 자세한 내용은 Proguard 매뉴얼의 ‑whyareyoukeeping
문서를 참고하세요.
원래 스택 트레이스 복구
R8에서 처리된 코드는 스택 트레이스가 더 이상 원본 코드를 참조하지 않도록 여러 방식으로 변경됩니다. 예를 들어 줄 번호와 클래스 및 메서드의 이름이 변경될 수 있습니다. 원래 스택 트레이스를 복구하기 위해 R8은 명령줄 도구 패키지와 함께 번들로 제공되는 retrace 명령줄 도구를 제공합니다.
retrace를 사용하려면 매핑 파일과 스택 트레이스 파일을 제공합니다. mapping.txt
라는 매핑 파일은 Android App Bundle (AAB)과 자동으로 번들로 묶입니다. 자세한 내용은 재추적 문서와 비정상 종료 스택 트레이스를 가독화하는 방법에 관한 Play Console 고객센터 도움말을 참고하세요.