[안드로이드 스튜디오] error: Cannot resolve symbol R - 해결법 (8) |
---|
# 사용중인 안드로이드 스튜디오 버전 : 3.1.2
Cannot resolve symbol R 문제는,
특히 안드로이드를 개발한지 얼마 안된 사람들이 많이 겪는 문제중 하나다.
일단 이건, "R.java" 파일에 무슨 문제가 생겼단 얘긴데,
'R' 파일이 뭔가 싶을거다.
'R' 파일은 내 프로젝트 내에 여러 리소스(레이아웃, 이미지, 아이콘 등등..)를
찾을 수 있는 주소값들을 자동생성하여 가지고 있는 파일이다.
(R.java 파일이 레이아웃 주소를 참조하고 있음을 보여주는 스샷)
즉, 주소값들을 자동생성하는 과정에 있어 어떠한 문제가 생겨 에러가 발생했다는 것.
이 에러를 발생시킬 수 있는 원인은 정말 다양한데, 원인일 확률이 높은 것들을 나열해보자면,
# 원인
1. 오타
말그대로 내 손이 잘못인 경우다.
상당히 많은 경우가 이 경우에 해당하므로, 아래 항목들을 체크해보길 바란다
- resource(레이아웃, 이미지 등)로 등록한 파일명에 '대문자'나, '특수기호'가 들어가 있는지 확인한다.
resource 명은 오직 '소문자'와 '언더바'만 허락된다. 그냥 안드로이드 스튜디오 규칙이다
- 레이아웃 xml 파일안에 오타가 없는지 확인한다
예를들어, 시작태그는 있는데 종료태그(</Linearlayout>)가 없어서 에러가 나는 경우도 있다
- manifest에 액티비티 클래스 이름을 적을 때, 미쳐 적지 못한 '점', '괄호' 등이 빠졌는지 확인한다
정말 별거 아닌건데, 안 보여서 빡칠때가 많다.
# 잘못된 선언 ==> <activity android:name="Test_activity"/>
# 올바른 선언 ==> <activity android:name=".Test_activity"/>
2. 나 오타 없는데?
오타 이외에도 많은 경우에 수가 있지만,
- 간혹 예제 프로젝트를 다운 받아서 열거나 import 하는 경우
- 혹은, 신규 프로젝트인데 R.java 파일이 어쩌다가(?) 생성이 되지 않는 경우가 정~~~말 간혹 있다
이때 혹시나 자바파일 안의 빨간색 'R'에 커서를 두고,
'Ctrl + 스페이스'를 눌러 억지로 (android.R)를 참조하지 말도록 하자.
그 R 파일이 아니다
# 해결방법: 아래 나열한 방법대로 시도해보자.
해결방법 1.
메뉴 > Build> Clean Project
메뉴 > Build> Rebuild Project
위를 차례대로 실행한다.
그래도 해결이 안된다면 아래 '해결방법 2.'를 시도한다.
해결방법 2.
메뉴 > File > Invalidate Caches / Restart
오타도 없고, 위 해결방법을 거쳤다면
어지간하면 에러가 해결될 것이다.