Gradle 스크립트에서 resValue 사용시 문제점

Jonghwan Choi·2023년 5월 31일
0

Android

목록 보기
9/9

resValue란?

resValue "string", "facebook_app_id", "99999999999"

Gradle 스크립트 안에 위와 같은 식의 코드를 적으면 빌드시 Gradle이 해당 키-값을 strings.xml 파일에 기입해주어, 다른 string 리소스와 똑같이 쓸 수 있다. 앱을 개발하면서 이걸 굳이 쓸 일은 없지 않을까 싶다. 그러나 다른 앱 개발자가 쓸 라이브러리를 만들 때, 앱이 로드되기 전에 AndroidManifest.xml에 입력해야 하는 값 (ex.페이스북 로그인 API에 필요한 앱 ID) 이 있을 경우 앱 측으로부터 이걸 어떻게 전달받을까 라는 머리아픈 문제를 resValue를 사용하면 쉽게 해결할 수 있다.

문제

resValue를 사용하면 앱 텍스트 로컬라이징이 필요할 경우 문제가 생긴다. 안드로이드 앱에서 텍스트 로컬라이징은 각 언어별 폴더를 만들고 그 안에 각각 다른 언어로 된 strings.xml 리소스를 위치시켜서, 시스템 언어 설정에 따라 해당하는 언어의 strings.xml을 자동으로 로드하는 방식으로 이루어진다.
그런데 resValue 명령으로 넣은 키-값은 기본 언어 폴더의 strings.xml 에만 입력되기 때문에, 시스템 언어를 변경하여 다른 언어 폴더의 strings.xml을 쓰게 될 경우 resValue 값이 해당 strings.xml 파일에 입력되지 않는다.

해결책

로컬라이징할 언어마다 하나씩 resValue 명령 내리기
일단 해결책을 찾아는 봤지만, 링크의 답변자도 지적하듯 resValue는 정석적인 방법이라고 볼 수 없어 그냥 쓰지 않는 것이 바람직할 듯하다. 라이브러리 개발자 입장에서 AndroidManifest.xml 에 값을 전달받아 넣는 방법이 고민이라면 그냥 앱 개발자에게 직접 입력하도록 시키면 된다. 어차피 앱과 라이브러리의 AndroidManifest.xml 파일은 자동 병합되니까.

profile
유니티 게임 클라이언트 개발자를 꿈꾸는 뉴비

0개의 댓글