will come true

[Android] Firebase 구글 인증 구현 시 R.string.default_web_client_id 오류 해결 본문

Android

[Android] Firebase 구글 인증 구현 시 R.string.default_web_client_id 오류 해결

haehyun 2022. 3. 3. 20:46

문제 상황

Firebase 인증(Authentication)을 통해 구글 로그인 기능을 구현하는 과정에서 'default_web_client_id' 라는 이름의 문자열 리소스를 참조해야 하는데, 프로젝트 리소스에 해당 이름의 문자열 리소스가 존재하지 않아 빨간색으로 표시된다.

 

해결

A. Rebuild Project

1. 안드로이드 스튜디오의 프로젝트 창 보기를 [Project]로 전환한 뒤, Friebase 연동 대상 모듈의 루트 디렉터리에 'google-services.json' 파일이 존재하는지 확인한다.

2. [Build] > [Rebuild Project] 클릭

 

3. 모듈명(ex: ch20_firebase) > [build] > [generated] > [res] > [google-services] > [values] 경로에 'values.xml' 파일이 생긴것을 확인할 수 있다. 

프로젝트를 꼭 최소 한 번은 빌드해야만 'google-services.json' 파일 내용을 토대로 'values.xml' 파일이 생성되는데, 이 파일이 바로 'default_web_client_id' 라는 문자열 리소스를 정의하고 있는 파일이다.
= 'value.xml' 텍스트 파일안에 'default_web_client.id' 문자열 리소스가 정의되어 있다.

values.xml 파일 경로
화질 깨질시 이미지 클릭해서 봐주세요!

 

4. 이렇게 'values.xml' 파일이 생겼으면 deault_web_client_id 문자열 리소스를 참조할 수 있게되는 게 보통이지만, 아직도 위 키워드가 빨간색으로 표시되며 존재하지 않는다고 뜨면 아래의 방법을 사용한다.

대부분의 해결 글에서는 values.xml 파일에 정의된 default_web_client_id 리소스의 값을 그대로 복사해서 코드내에 하드코딩하는 방법을 사용하는 것 같지만, 더 나은 방법을 찾아 아래에 적어뒀다. (텍스트 리소스를 메인 코드내에 하드코딩하는 방법은 추천하지 않는다. 리소스는 리소스끼리 모여있어야 좋은, 클린 코드라 할 수 있다.)

 

B. google services 버전 변경

1. [build.gradle(Project)] 파일의 dependencies에 정의해둔 google-services 라이브러리 버전을 수정한다.
위와 같은 문제를 겪은 사람들은 아마 최신 버전(4.3.10)으로 해뒀을텐데, 이를 낮춰서 4.3.8 로 수정한다.

classpath 'com.google.gms:google-services:4.3.8'

+) 댓글 제보에 따르면 4.3.13 버전으로 설정해도 제대로 작동한다네요! 아마 4.3.10버전만 뭔가 문제가 있었나봅니다.

 

2. [Build] > [Rebuild Proejct]

 

3. R.string.default_web_client_id 문자열 리소스가 제대로 탐색된다. 그 외에도 values.xml 파일에 <string> 태그로 정의되어 있던 모든 리소스들이 제대로 참조될 것이다.

 


새로운 정보 및 게시글 내 오류 제보는 언제나 환영합니다!

Comments