애플리케이션용 자바 프로그래밍이나 일반 자바 프로그래밍 관련은 다른 방법으로 컴파일 가능하다. 그러나..

안드로이드 프레임워크단이고, ant 아닌 android용 make라면 다음과 같은 방법으로 가능하다.

자바 단에서

public static final boolean TARGET_PRODUCT = flase;


로 정의하고,

 분기컴파일이 필요한 부분에 가서,

if (TARGET_PRODUCT) {

// 코드 내용, 이 부분은 false로 남아있을 경우, 컴파일 할때 사라짐.

}



그리고 해당 make 파일에서 해당 product에 따라 간단히 awk  나 sed로 저기 fasle 부분만 바꿔주는 경우로 하면 된다.  자바도 컴파일할때 최적화를 하기에 저렇게 절대로 실행이 안되는 부분(상기 TARGET_PRODUCT이 적용 안되는 경우) 컴파일 할 때 생략한다.

/* 커맨트 추가
 원래는 안드로이드에서 쓰는 property_get() (system/core/include/cutils/properties.h 에 정의)를 product에 맞는 프로퍼티를 설정해 놓고 거기에 맞게 쓸까 했는데, 이러면 전처리기라기보단 그냥 분기실행 같기도 하고, 프로퍼티를 저런 식으로 써도 되는지 몰라서 안했습니다.

 이 방법에 문제라면 product종류가 2개 이상이면 조금 복잡해지는거 같습니다.  안드로이드가 아닌 그냥 자바라면 디펜던시 인젝션 하는 방법으로 하면 간단히 해결 되는 걸로 알고 있습니다.(이 부분은 해당업무가 바뀌면 올리겠습니다 ㅎㅎ)
*/

'안드로이드 > 프레임워크' 카테고리의 다른 글

Bionic libc (2)  (0) 2012.11.08
Bionic libc  (0) 2012.10.30
안드로이드 init.rc (oom_adj값)  (0) 2012.09.27
Dalvik Virtual Machine 와 odex  (0) 2012.08.13
안드로이드 바인더 ipc  (0) 2011.10.23
Posted by code cat