📜 TIL

[Android] values의 strings.xml에 없는 값을 사용해도 실행이 잘 되는 경우

둥굴둥굴둥굴레차 2022. 10. 20. 12:47

🎈 문제

외주를 맡겼던 소스에 위와 같이 string값을 찾을 수 없다는 빨간색 에러가 떴다. 그런데 막상 앱을 실행시키면 별다른 오류없이 잘 실행된다.

 

🎈 분석

우선 해당 데이터가 어디에 있는지 확인하기 위해 import한 R의 위치가 어디인지 확인해보았다. 그리고 해당 패키지에 있는 res - values - strings.xml을 확인해보았지만 위 데이터는 찾아볼 수 없었다.

 

🎈 해결

이러한 이유는 외주를 맡겼던 패키지에서 존재했던 default_web_client_id값이기 때문에, 현재 앱 내에서의 어느 패키지의 values - strings.xml 위치에도 해당 데이터가 전혀 존재하지 않지만 바이너리 파일 형식으로 어딘가에 남아있기 때문에 앱은 문제없이 잘 실행되는 것이다.

 

실제로 해당 앱의 lib폴더를 들어가면 .arr 형식의 여러 파일들이 존재하는데, 이중 하나가 에러가 뜬 클래스가 상속하는 라이브러리에 대한 바이너리 파일이다. 따라서 추측하건데 .arr 형식의 외주업체의 라이브러리 파일에 위 데이터가 바이너리 형태로 들어가있지 않을까 생각한다.

 

[참고] ARR 파일

Android 라이브러리 프로젝트의 바이너리 배포판. Java 클래스 파일과 리소스가 합쳐진 형태.


REFERENCE

 

텍스트 파일과 바이너리 파일에 대하여!

: C 언어 관련 전체 목차 http://blog.naver.com/tipsware/221010831969 1. 바이너리 파일이란? 우리가 많...

blog.naver.com