• Android build 시 각 파일의 역할 (Makefile, *.mk 의 역할)과 PDK build 란?

    2016. 2. 24.

    by. 꼼발남자


    출처 : http://bluelight.tistory.com/686



    /Makefile

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





    /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 등을 위한 타겟 변수 정의


    help.mk

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


    cleanbuild.mk

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

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


    dex_preopt.mk

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


    pdk_config.mk

    - PDK(Platform Development Kit) 빌드

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


    post-clean.mk

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


    legacy_prebuilts.mk

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


    Android build 환경에 대해 공부도 하고 ... 뭐가 이렇게 알아야 할 것이 많은지.... Android 다음 버젼이 일찍 나오지 않는다면 휴대폰 개발사에서 일하는 개발자들이 update 해주는 수고는 조금 덜을 것 같은데 어김없이 나오겠죠?

    Android 현재 최신 버젼의 이름은 마시멜로 임은 모두 알고 있지만 다음 버젼의 이름은 알려지지 않은 것으로 알고 있습니다. N 으로 시작하는 디저트 이름일 텐데 N 시작하는 디저트라고 영어 사이트에서 그러는데 디저트 이름을 모르니.... ㅎㅎ

    'Android' 카테고리의 다른 글

    [Android] logging functions  (0) 2016.03.14

    댓글