일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Android
- androidstudio
- bitmap
- BOJ
- Canvas
- CS
- Database
- DBeaver
- DP
- Ecilpse
- Eclipse
- firebase
- git
- github
- GooglePlayServices
- gradle
- IDE
- IntelliJ
- java
- json
- kotlin
- level2
- linux
- mariadb
- MYSQL
- Paint
- permission
- python
- Sorting
- sourcetree
will come true
[Android] Firebase 구글 인증 구현 시 R.string.default_web_client_id 오류 해결 본문
[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' 문자열 리소스가 정의되어 있다.
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> 태그로 정의되어 있던 모든 리소스들이 제대로 참조될 것이다.
새로운 정보 및 게시글 내 오류 제보는 언제나 환영합니다!
'Android' 카테고리의 다른 글
[Android] 화면을 비트맵 객체에 그리기 (0) | 2022.03.04 |
---|---|
[Android] Google Play services - Task<TResult> 타입 (0) | 2022.03.04 |
[Android] Firebase gradle sync failed 오류 해결, 안드로이드 오프라인 모드로 사용하기 (0) | 2022.03.03 |
[Android] 내장 메모리, 외장 메모리 / 앱별 저장소, 공용 저장소 (0) | 2022.02.22 |
[Android/Kotlin] 안드로이드 주소록 앱(Contacts)에서 연락처 상세 정보 가져오기, cursor의 count가 0일 때 or moveToFirst() 실행 안될 때 문제 해결 (0) | 2022.01.27 |