호야의 블로그
<안드로이드> cannot resolve symbol ~ 에러 해결하기
1번째 방법, Clean Project -> Rebuild Project
1번째 방법은 'Build' 카테고리에서 Clean Project와 Rebuild Project를 순차적으로 시행하여 빌드를 초기화하고 재정의하는 방법입니다. 논리적으로나 알고리즘상으로 코드가 올바르게 보이지만 gradle과 싱크가 맞지않을 경우 빌드 오류가 발생하게 됩니다. 대부분 사소한 오류들은 이같은 작업 만으로 대부분 해결된다고 보시면 됩니다.
매우 간단하지만 효과적인 방법입니다. 하지만 이러한 방법으로도 해결되지 않는다면 계속해서 읽어주시길 바라겠습니다. 물론 저도 이 방법으로 해결하지 못했습니다.
2번째 방법, Sync Project with Gradle Files
2번째 방법입니다. 안드로이드 프로젝트는 초기 빌드 시 Gradle 파일이 생기며, 이와 동기화 시켜줍니다. Gradle은 호환될 기기의 버전, 외부 라이브러리 선언 등 다양한 설정을 하는 파일입니다. 필수적으로 사용자가 작성한 App의 프로젝트 코드와 동기화를 이루어야 정상적으로 디버깅이 가능하게 됩니다.
하지만 이러한 Sync가 제대로 맞춰져 있지 않을 경우 Gralde 파일과 프로젝트의 싱크를 다시 맞춰주는 작업을 시도해야 합니다. 그 작업이 바로 File 카테고리에 위치한 Sync Project with Gradle Files 입니다.
스튜디오 우측 상단에 위치한 툴바에서 Sync 아이콘을 클릭하여 동작하는 방법도 있습니다.
3번째 방법, Invalidate Caches/Restart
3번째 방법입니다. 여기까지 안왔으면 더 좋았을텐데 아쉽습니다. 이번 방법은 시간이 오래걸리는 만큼 더욱 확실한 방법이며, 더이상은 마지노선에 다가섰다고 보시면 됩니다. File 카테고리의 Invalidate Caches/Restart 입니다.
이 방법은 캐시를 무효화하고, 스튜디오를 재시작하는 것으로 프로젝트와 관련한 모든 캐시를 삭제하여 재빌드하는 방법입니다. 만병통치약으로 불립니다.
위 같은 다이얼로그가 호출되면 파란색 버튼 '무효화와 재시작'을 클릭하시면 스튜디오가 종료되고, 재시작 됩니다. 이후 새롭게 빌드하게 됩니다. 이 방법으로 대체로 해결되나 저는 물론 해결하지 못했습니다.
마지막으로 제가 해결한 방법을 알려드리겠습니다.
마지막 방법, 다 갈아 엎기
부제목이 살벌하지만 정답입니다. 물론 스튜디오를 삭제하고 다시 설치하라는 뜻은 아닙니다. 저는 안드로이드 플러그인 버전이 3.1.X에서 3.2.1로 올라간지 얼마안돼서 이같은 오류가 발생했습니다. 따라서 버전이 이동하며 문제가 생겼다고 생각했고 다음과 같은 방법을 활용했습니다.
C:\Users\[유저이름]에 들어가시면 다음과 같은 '.AndroidStudio3.X' 폴더가 있습니다. 저는 3.0, 3.1, 3.2가 존재했습니다.
이제 현재 버전에 맞지 않는 3.0과 3.1 폴더를 삭제하고, 스튜디오를 재시작합니다. 그럼 제일 처음 스튜디오를 깔았을 때와 같은 UI가 나오고, 프로젝트를 다시 여시면 됩니다. 오랜 시간 기다리면 빌드가 성공하고,(만약 실패할 경우 Rebuild) 'Cannot resolve symbol~' 과 같은 에러가 사라집니다. 외부라이브러리가 있었던 경우, 다시 Jar을 프로젝트에 풀어주어야 합니다.
만약 혹시 진짜 이 방법으로도 에러가 발생한다면,
그건 코드를 다시 확인하셔야합니다.
후기 및 정리
이틀동안 프로젝트를 진행하지 못하게 막았던 에러입니다. 온갖 시도 끝에 찾은 방법으로 여러분들은 이글을 보고 보다 빨리, 보다 쉽게 해결했으면 좋겠습니다. 감사합니다.
안드로이드 2번째 글: 2018/12/07 - [IT/Android] - 안드로이드에서 AsyncTask를 활용한 스레드 동작
안드로이드 1번째 글: 2018/10/26 - [IT/Android] - 안드로이드에서 웹서비스 호출하기(wsdl)
조금의 도움이 되셨다면 로그인 없이도 가능한 댓글과
왼쪽 아래 ♥공감 버튼을 꾹 눌러주세요!
'IT > Android' 카테고리의 다른 글
안드로이드에서 AsyncTask를 활용한 스레드 동작 (1) | 2018.12.07 |
---|---|
안드로이드에서 웹서비스 호출하기(wsdl) (0) | 2018.10.26 |