IT/Android

cannot resolve symbol ~ 에러 해결하기

김효랑이 2018. 12. 21. 13:26
728x90
반응형

 호야의 블로그 

<안드로이드> cannot resolve symbol ~ 에러 해결하기

프로젝트를 진행 중에 모든 변수 코드가 빨갛게 변하는 에러를 맞이했습니다. 스탠다드 라이브러리에 포함된 변수들에서 에러가 발생하는 것 처럼 보였습니다. 오늘은 프로젝트 중 한 번씩은 발생하는 'Cannot resolve symbol ~' 에러를 다양한 방법으로 해결해보도록 하겠습니다.
아래와 같은 몇개의 타입 오류가 아닌, '모든' java 코드에 타입 에러가 발생하는 경우입니다.


1번째 방법, Clean Project -> Rebuild Project

1번째 방법은 'Build' 카테고리에서 Clean Project와 Rebuild Project를 순차적으로 시행하여 빌드를 초기화하고 재정의하는 방법입니다. 논리적으로나 알고리즘상으로 코드가 올바르게 보이지만 gradle과 싱크가 맞지않을 경우 빌드 오류가 발생하게 됩니다. 대부분 사소한 오류들은 이같은 작업 만으로 대부분 해결된다고 보시면 됩니다.

Rebuild Project

매우 간단하지만 효과적인 방법입니다. 하지만 이러한 방법으로도 해결되지 않는다면 계속해서 읽어주시길 바라겠습니다. 물론 저도 이 방법으로 해결하지 못했습니다.


2번째 방법, Sync Project with Gradle Files

2번째 방법입니다. 안드로이드 프로젝트는 초기 빌드 시 Gradle 파일이 생기며, 이와 동기화 시켜줍니다. Gradle은 호환될 기기의 버전, 외부 라이브러리 선언 등 다양한 설정을 하는 파일입니다. 필수적으로 사용자가 작성한 App의 프로젝트 코드와 동기화를 이루어야 정상적으로 디버깅이 가능하게 됩니다.

하지만 이러한 Sync가 제대로 맞춰져 있지 않을 경우 Gralde 파일과 프로젝트의 싱크를 다시 맞춰주는 작업을 시도해야 합니다. 그 작업이 바로 File 카테고리에 위치한 Sync Project with Gradle Files 입니다. 

Sync Project with Gradle Files

Sync Project with Gradle Files

스튜디오 우측 상단에 위치한 툴바에서 Sync 아이콘을 클릭하여 동작하는 방법도 있습니다.


3번째 방법, Invalidate Caches/Restart

3번째 방법입니다. 여기까지 안왔으면 더 좋았을텐데 아쉽습니다. 이번 방법은 시간이 오래걸리는 만큼 더욱 확실한 방법이며, 더이상은 마지노선에 다가섰다고 보시면 됩니다. File 카테고리의 Invalidate Caches/Restart 입니다.

이 방법은 캐시를 무효화하고, 스튜디오를 재시작하는 것으로 프로젝트와 관련한 모든 캐시를 삭제하여 재빌드하는 방법입니다. 만병통치약으로 불립니다.

Invalidate Caches/Restart

Invalidate Caches/Restart

위 같은 다이얼로그가 호출되면 파란색 버튼 '무효화와 재시작'을 클릭하시면 스튜디오가 종료되고, 재시작 됩니다. 이후 새롭게 빌드하게 됩니다. 이 방법으로 대체로 해결되나 저는 물론 해결하지 못했습니다.

마지막으로 제가 해결한 방법을 알려드리겠습니다.


마지막 방법, 다 갈아 엎기

부제목이 살벌하지만 정답입니다. 물론 스튜디오를 삭제하고 다시 설치하라는 뜻은 아닙니다. 저는 안드로이드 플러그인 버전이 3.1.X에서 3.2.1로 올라간지 얼마안돼서 이같은 오류가 발생했습니다. 따라서 버전이 이동하며 문제가 생겼다고 생각했고 다음과 같은 방법을 활용했습니다.

gradle version

C:\Users\[유저이름]에 들어가시면 다음과 같은 '.AndroidStudio3.X' 폴더가 있습니다. 저는 3.0, 3.1, 3.2가 존재했습니다. 

이제 현재 버전에 맞지 않는 3.0과 3.1 폴더를 삭제하고, 스튜디오를 재시작합니다. 그럼 제일 처음 스튜디오를 깔았을 때와 같은 UI가 나오고, 프로젝트를 다시 여시면 됩니다. 오랜 시간 기다리면 빌드가 성공하고,(만약 실패할 경우 Rebuild) 'Cannot resolve symbol~' 과 같은 에러가 사라집니다. 외부라이브러리가 있었던 경우, 다시 Jar을 프로젝트에 풀어주어야 합니다.

만약 혹시 진짜 이 방법으로도 에러가 발생한다면,

그건 코드를 다시 확인하셔야합니다.


동원샘물 미네마인,... 제주삼다수, 2L,... 농심 백산수, 2L... 갭 남성용 로고 플...


후기 및 정리

이틀동안 프로젝트를 진행하지 못하게 막았던 에러입니다. 온갖 시도 끝에 찾은 방법으로 여러분들은 이글을 보고 보다 빨리, 보다 쉽게 해결했으면 좋겠습니다. 감사합니다.



조금의 도움이 되셨다면 로그인 없이도 가능한 댓글과

왼쪽 아래 ♥공감 버튼을 꾹 눌러주세요! 



728x90
반응형