Android full source 를 빌드할 때, 새로운 product 를 추가하는 과정을 정리했습니다.


다음의 글에 이어집니다.


http://forum.falinux.com/zbxe/index.php?mid=android&document_srl=785265


5. 보드 정보를 포함하는 <board_name> 디렉토리를 <company_name> 안에 생성합니다.

   board_name 은 <product_name>.mk 파일의 DEVICE_NAME 에 값과 일치해야합니다.

  mkdir vendor/<company_name>/<board_name>


6. BoardConfig.mk 파일을 <board_name> 디렉토리안에 생성합니다. vendor/<company_name>/<board_name>

  # These definitions override the defaults in config/config.make for <board_name>
  #
  # TARGET_NO_BOOTLOADER := false
  # TARGET_HARDWARE_3D := false 
  #
  TARGET_USE_GENERIC_AUDIO := true


7. 시스템 properties 를 변경할 필요가 있다면 <board_name> 디렉토리안에 system.prop 파일을 생성합니다.

   vendor/<company_name>/<board_name>

  # system.prop for 
  # This overrides settings in the products/generic/system.prop file
  #
  # rild.libpath=/system/lib/libreference-ril.so
  # rild.libargs=-d /dev/ttyS0


8. <board_name> 디렉토리에 Android.mk 파일을 추가합니다. Android.mk 파일은 반드시 다음의 내용을 포함해야 합니다.

  # make file for new hardware  from 
  #
  LOCAL_PATH := $(call my-dir)
  #
  # this is here to use the pre-built kernel
  ifeq ($(TARGET_PREBUILT_KERNEL),)
  TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel
  endif
  #
  file := $(INSTALLED_KERNEL_TARGET)
  ALL_PREBUILT += $(file)
  $(file): $(TARGET_PREBUILT_KERNEL) | $(ACP)
		$(transform-prebuilt-to-target)
  #
  # no boot loader, so we don't need any of that stuff..  
  #
  LOCAL_PATH := vendor/<company_name>/<board_name>
  #
  include $(CLEAR_VARS)
  #
  # include more board specific stuff here? Such as Audio parameters.      
  #


9. 빌드시 다음과 같은 명령으로 해당 product 를 빌드할 수 있습니다.

  . build/envsetup.sh
  make PRODUCT-<product_name>-user


10.  New Product File Tree


  + <company_name>

        + <board_name>

               + Android.mk

               + product_config.mk

               + system.prop

        + products

               + AndroidProducts.mk

               + <product_name>.mk


* 이 문서는 다음 문서를 참조햇습니다.

    http://www.kandroid.org/online-pdk/guide/build_new_device.html