본문 바로가기

공부/안드로이드

2011/06/10 안드로이드 프레임워크의 클래스 파일에 api 또는 property 추가하기


회사에서 일하다가 안드로이드 framework 소스에 api 와 property를 추가할 일이 생겼다..

뭐 인터넷 뒤져봐도 마땅한 자료도 없고..(내가 검색능력이 딸리는건지도??)

결국 삽질끝에 어떻게 해결을 하게 되었다..

1. api 추가 시 => 그냥 추가하면 됨..
 - 예를 들어 TextView.java 에 메소드를 추가한다고 하면 TextView 클래스에 메소드를 추가하면 된다.

2. property 추가 시
\frameworks\base\core\res\res\values\attrs.xml => 속성값 추가
\frameworks\base\core\res\res\values\public.xml => 속성값에 대한 id 부여
속성을 추가한 오브젝트의 클래스 파일에 해당 속성값을 담을 수 있는 멤버변수와 이를 핸들링할 get, set 메소드를 추가

프레임웤에서 관련 작업을 해서 이를 App 에서 사용하려면 make하기 전에 make update-api를 해줘야 한다.

property를 추가하는 경우 만약 public.xml파일에 id를 부여하지 않으면 make update-api를 해도 current.xml파일에 해당 수정사항이 적용되지 않기때문에 App에서 추가된 property를 사용할 수 없다.

api 추가 시 make update-api를 하지 않고 이를 적용하려면 주석에 아래와 같이 @hide를 추가해주면 된다.

이는 해당 메소드를 외부로 공개하지 않겠다는 의미로 framework에서만 사용할 경우 이 처리를 해주면 된다.

/**
*@hide
*/
public void aaa(){
...
}