애플리케이션용 자바 프로그래밍이나 일반 자바 프로그래밍 관련은 다른 방법으로 컴파일 가능하다. 그러나..
안드로이드 프레임워크단이고, 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 |