상세 컨텐츠

본문 제목

Android Build 환경 설명 및 Make file 에서 외부 so library 파일을 추가하는 방법 과 PDK build

IT : Ubuntu

by 휀스 2014. 10. 3. 00:13

본문



Android Build 환경 설명 및 Make file 에서 외부 so library 파일을 추가하는 방법 과 PDK build


Make file 을 이용해 어떤 일을 할 때 지금 가지고 있는 파일들을 build 해서 사용하는 것이 아니라 기존에 만들어져 있던 lib 를 사용하여야 할 때도 있습니다.


소스가 아닌 lib 파일 *.so 를 include 하여 사용하는 방법은 아래와 같습니다.


일단 추가되는 lib 파일이 libexter.so 라고 할때 


CAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_PREBUILT_LIBS += libexter.so

include $(BUILD_MULTI_PREBUILT)


의 형식으로 make file 을 만들고 현재 directory 에 exter.so 를 넣어주면 됩니다. 


이 lib 를 사용하는 방법은 make file 내에 


LOCAL_SHARED_LIBRARIES := libexter.so

include $(BUILD_SHARED_LIBRARY)


를 추가하여 주면 됩니다.


Android Build 의 PDK 빌드란?


pdk_config.mk 에 정의 되어 있는 빌드 옵션으로 PDK(Platform Development Kit) 빌드 라고 함.

PDK 빌드는 모든 소스 코드를 가지고 빌드하지 않아도 될 경우 lib 를 만들어 놓고 미리 만들어 놓은 lib 를 실제 build 시에 사용하도록 하는 것으로 외부에 소스를 배포해야 할 경우 특정 모듈을 lib 형태로 배포할 수 있게 함.


/Makefile

- 안드로이드 빌드의 가장 첫 Makefile로 build/core/main.mk를 읽어 빌드를 시작하는 역할 






추가로 Android Build 파일에 대한 설명입니다.


/build/core/main.mk

 -  빌드에 필요한 Java 버전을 확인하여 적절하지 않을 경우 fail 이 발생하고 빌드가 멈춤.

 -  lunch 나 choosecombo 에서 선택한 user, userdebug, eng 등 빌드 버전 설정 함

 -  하위 폴더의 모든 Android.mk 파일 탐색하여 읽어 들임 (findleaves.py 파일을 사용)

 -  읽어들인 Android.mk 파일 중 실제 빌드에 사용되는 모듈을 필터링해 줌


config.mk

 - 이전에 명세한 내부 빌드 시스템 설정(CLEAR_VARS 등)

 - lunch 설정에 따른 보드 설정 파일(BoardConfig.mk) 탐색 및 분석

 - 각종 툴 설정(예 : aapt, proguard, flex 등)


definitions.mk  - 수 많은 매크로를 정의(예 : my-dir, all-subdir-makefiles, add-prebuilt-file 등) 해 놓은 파일


Android.mk - 각 모듈의 빌드를 위한 Makefile로 이 파일을 모아 전체 android build 를 하는 것임. 일반적으로 특정 폴더의 Android.mk 파일만을 지정해서 읽어들이지 않고 하위 폴더의 모든 Android.mk 를 읽는 방식으로 동작함.


build/core/Makefile

 - recovery image, system image, ram image 등을 위한 타겟 변수 정의


cleanbuild.mk

- config.mk를 통해 환경변수가 설정 된 이후 발생한 모든 종속성들을 정리함.

- 반드시 config.mk가 Include된 이후에 로드되어야 함.


dex_preopt.mk

- Preloaded Application의 jar code를 dex로 Preoptimizing함. dex 가 무엇인가에 대해서는 다른곳에서.... 그때 odex 도 함께 ^^


post-clean.mk

- 빌드 전, 현재의 빌드 설정과 이전 빌드 결과물을 확인하여 정리함.(Android.mk Include 후 실행)


legacy_prebuilts.mk

- ALL_PREBUILT에 변경사항이 있는지 검사하는 역할을 합니다.


help.mk

- 빌드 시스템의 도움말에 대한 정의를 해 놓은 파일로 이 파일을 잘 보면 빌드에러 처리를 잘 할 수 있음



관련글 더보기