2012년 2월 22일 수요일

[안드로이드] public.xml - 리소스값 고정하기

기본적으로 안드로이드에서는 리소스를 자동으로 관리해 준다.
res/ 이하의 디렉토리에 리소스 값을 넣어두면
Pre-compile시 재네레이터가
gen/ 폴더에 해당 리소스의 id값을 R.java 에 넣어 주게 된다.
개발자는 그 값을 이용해 리소스를 이용하기만 하면 아무 문제가 없는데...

문제는 만든 앱이 점점 버젼업을 해가고 다른 앱과 연동을 할때,
그것도 다른앱과 리소스를 공유한다면 발생하게 된다.

사실 거의 드문 케이스이기 때문에 예를 자세히 들면,

먼저 A 라는 앱이 있다.
이 앱엔 다른 앱의 아이콘 리소스 값을 등록해 해당 아이콘을 표시해 주는 기능이 있다.

B라는 앱에서 aa 라는 리소스를 만들었고,
A앱이 제공 하는 기능으로 aa의 값(0x71c4ee68 라고 하자)을 A앱에 등록 하였다.

시간이 흘러 B앱이 업데이트 되었고, 그와중에 리소스가 몇가지 추가 되어
aa의 값이 뒤로 밀리게 되었다. (0x71c4eee6)
A앱에 리소스가 등록된 상태에서 B앱이 업데이트 되면
A앱엔 B앱의(0x71c4ee68) 에 해당하는 아이콘이 보여 지게 될 것이다.
물론 B앱에서 기동시에 A앱의 값을 갱신해 주면 되지만,
뭔가 찝찝 하다.

이런 경우 aa 의 값을 고정해 줄수 있는 방법이 있다.
public.xml 이 바로 그것이다.

B앱의 res/values에 다음과 같이 public.xml을 추가 한다.
<resources>
 <!-- Fix resource value for app A -->
        <public type="drawable" name="aa" id=" 0x71c4ee68" />
</resources>
이렇게 하면 R.java의 aa값이 0x71c4ee68 로 고정될 것이다.
또한 재미있게도 주석으로 표시된 "Fix resource value for app A" 도
R.java에 주석으로 들어가게 된다.

댓글 없음:

댓글 쓰기