티스토리 뷰

안드로이드 스튜디오에서 내부 소스 코드를 보려고 할 때 위 처럼 모든 구현부가 RuntimeException을 던지는 파일이 나올 때가 있다.
throw new RuntimeException("Stub!");
메시지 내용은 다음과 같다.
Decompiled .class file, bytecode version: 52.0 (Java 8)
Sources for 'Android API 30 Platform' not found.
이 문제는 안드로이드 API 버전에 해당하는 Source가 다운로드 되어 있지 않아서 발생한 것이다.
여기서 두 번째 "Sources for 'Android API 30 Platform' not found." 메시지는 안드로이드 API 30 버전의 Source가 없으니 다운로드를 하라는 메시지이다. 하지만 현재 30 버전의 소스코드는 공개되지 않은 상태이기 때문에 다운로드 받을 수 없다.
이를 위해 Android 버전을 29로 내려야 한다.
그 방법은 앱 모듈의 gradle 파일 - build.gradle(Module: app) - 의 compileSdkVersion을 29로 설정한다.
그 때 아래와 같이 컴파일 에러가 발생할 수도 있다.

이는 targetSdkVersion보다 compileSdkVersion이 낮을 수 없기 때문인데, 이는 Gradle 호환성과 관련이 있다. 해결 방법은 2가지가 있다.
첫 번째 방법은 targetSdkVersion을 맞춘다.
android {
compileSdkVersion 29
...
defaultConfig {
...
targetSdkVersion 29
...
}
...
}
두 번째 방법은 주석을 추가해서 Gradle 호환성 문제를 검사하지 말라고 컴파일러에게 알려준다.
android {
// noinspection GradleCompatible
compileSdkVersion 29
...
}
이제 API 29에 해당하는 Source가 있는지 확인한다.
안드로이드 스튜디오에 [Preferences] (Windows에서는 [Settings]) 에서 [Android Sdk]로 들어간다.
아래 체크박스에 show Package Details 체크해서 Sources for Android 29가 Installed 되었는지 확인한다.

이렇게 하면 API 29에 대한 내부 소스 코드를 볼 수 있다!

'끄적끄적' 카테고리의 다른 글
| Android Studio 자주 쓰는 단축키 모음 (0) | 2020.09.11 |
|---|
- Total
- Today
- Yesterday
- RuntimeException
- MSSQL
- 내용제공자
- 위험권한
- personal access token
- 부스트코스
- Python
- kotlin
- covariance
- SQL
- 안드로이드
- 프로그래머스
- gson
- SQL Server
- 알고리즘
- AsyncListDiffer
- python3
- ViewHolder
- RecyclerView
- pecs
- Android
- SOCKET
- Algorithm
- DiffUtil
- 파이썬
- GitHub
- Java
- AndroidStudio
- SQLiteOpenHelper
- SQLD
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |