본문 바로가기
안드로이드

[안드로이드] Android의 framework에 resource 추가하기

by 호군 2012. 2. 14.
반응형

안드로이드의  framework에 style, drawable, attribute 등을 추가하는 방법을 적어봅니다.
안드로이드에서 제공하는 리소스들은 frameworks/base/core/res/res/ 디렉토리에 존재합니다.
그럼 추가 할 리소스를 타입에 맞게 추가를 하면되죠.
그리고 build를 다시하고, api를 업데이트 합니다.
자! 이젠 app을 컴파일하면, 찾을수 없다거나 public 리소스가 아라는 메세지가 보게됩니다.

Error: No resource found that matches the given name (at        ......          ).

Error: Resource is not public. (at      ......      ).

리소스를 추가하는 것 만으로는 app에서 사용 할 수가 없나 봅니다.
그렇다면 해줘야 할 것은 리소스를 공개해야겠죠. 

이름도 나름 명확하게 public.xml이라는 파일에 리소스를 공개하시면 됩니다.
파일의 위치는 frameworks/base/core/res/res/values/public.xml 라는 경로에 있습니다.

public.xml의 내용을 보면.. 아래와 같이 되어있습니다.
  ...
<public type="attr" name="theme" id="0x01010000" />
<public type="attr" name="label" id="0x01010001" />
<public type="attr" name="icon" id="0x01010002" />
<public type="attr" name="name" id="0x01010003" />
  ...
여기서 공개할 리소스의 type, name, id를 정의합니다. 여기서 name과 id는 절대 겹쳐서는 안되겠죠?
꼭 확인하시기 바랍니다.

frameworks를 수정했으니 다시 빌드를 하고, api를 업데이트 합니다. 그리고 app을 컴파일하도록 하죠.
]$ m              
]$ make update-api
]$ cd packages/apps/<app directory>
]$ mm
m은 전체 빌드이고, mm은 해당 디렉토리를 빌드합니다.
그리고 framework를 수정하면, make update-api를 해줘야 api를 사용 할 수 있습니다.

만약 nfs를 사용하여 테스트를 하실 때, 제대로 적용이 안된다면 nfs를 날리시고 다시 nfs를 구성해서 하세요.
반응형