Windows Phone 7을 개발하기 위해서 Developer Tool을 설치해보자-!!

Windows Phone Developer 사이트로 바로 가기!

1. 위 사이트로 접속 후



2. Get the free tools 혹은 그 옆의 배너를 클릭!



3. 요기서 다시 Download the Developer Tools를 클릭!
   
그러면 다음과 같은 Microsoft 다운로드 사이트로 접속을 하게 된다.



4. 요기서 제일 아래로 쭈우우~욱 내리면 다음과 같이 다운로드가 보인다.
    본인은 요기서 초록색으로 표시된 vm_web.exe 파일을 다운로드 하였다.



5. 다운로드 후 vm_web.exe 를 실행하면 설치가 진행되고 마지막으로 Restart Now를 클릭해서
재부팅을 하면 설치는 완료가 된다.
저작자 표시 비영리 변경 금지
Posted by Maris Stella
안드로이드에 새로운 모델을 추가시에 몇가지 바뀐 부분들이 있는 것 같아 번역 겸 정리를 하게 되었다.
우선 새로운 모델을 만들고 싶다면 요기를 참조하도록 하자...^_^


저는 Ubuntu 9.04에서 빌드를 진행하였습니다.

우선 소스를 다운 받으면 다음과 같이 폴더 구조를 볼 수 있습니다.




1. Company Directory를 vendor 아래에 생성합니다.
저는 marisstella라고 회사이름을 만들어서 디렉토리를 생성하였습니다.

     mkdir vendor/<Company name>
 

2. <Company name> 디렉토리 아래에 products 디레토리를 하나 더 생성합니다.

    mkdir vendor/<Company name>/products


3. products 폴더에 product-specific make file인 <product_name>.mk 파일을 생성하고 


    $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)
    #
    # Overrides
    PRODUCT_NAME := <product_name>
    PRODUCT_DEVICE := <board_name>

저는 A1234.mk 파일을 생성하였습니다.




4. 역시 같은 디렉토리인 products 폴더에 AndroidProduct.mk 파일을 생성 후 다음 내용을 추가합니다. 
이 파일은 각각의 product make 파일들을 찾거나 가르키게 됩니다.

   # The directory containing this file
   #
   # This file may not rely on the value of nay variable other than
   # LOCAL_DIR; do not use any conditionals, and do not look up the
   # value of any variable that isn't set in this file or in a file that
   # it includes.
   #

   PRODUCT_MAKEFILES := \
        $(LOCAL_DIR)/first_product_name.mk \




5. 이제 board-specific 디렉토리를 <Company_name> 디렉토리 아래에 만들어줍니다. 
이 때 board specific 디렉토리의 이름은 /vendor/<Company_name>/products/<product_name>.mk 파일 안의 PRODUCT_DEVICE 변수의 board_name 과 같아야 합니다. 

     mkdir vendor/<Company_name>/<board_name>

즉, 저의 경우에는 /veondor/marisstella/products/A1234.mk 에 
PRODUCT_DEVICE := A1234 로 설정해두었으므로 폴더이름은 A1234 가 되면 됩니다.




6. <board_name>으로 만들어진 폴더 안에 BoardConfig.mk 파일을 생성하고 다음과 같은 내용을 입력합니다.

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




7. 만약 System 속성을 변경하고 싶다면 <board_name>으로 생성된 폴더에 system.prop 파일을 생성하면 됩니다.

   # 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.  




10. 이제 빌드를 하시면 됩니다. 빌드 방법은 다음과 같습니다.

     . build/envsetup.sh
    make PRODUCT-product_name-eng

make PRODUCT-product_name-eng 에서 eng를 user로 변경하시면 user mode 빌드를 할 수 있습니다.

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




11. 빌드를 실행하면 다음과 같은 에러가 발생합니다.
이런 저런 빌드에러가 생각보다 많이 나서 몇 가지 제가 수정한 부분들만 정리하였습니다.



* No TARGET_CPU_ABI defined by board config

이것은 TARGET_CPU_ABI 변수가 정의되지 않아서 에러가 난 것이므로
vendor/<Comapny_name>/<product_name>/BoardConfig.mk 파일에
TARGET_CPU_ABI := armeabi 을 추가합니다.





* Please rename "vendor/marisstella/A1234/Android.mk" to
 "vendor/marisstella/A1234/AndroidBoard.mk"


vendor/<Company_name>/<product_name>/Android.mk 파일을 AndroidBoard.mk 파일로 이름을 변경합니다.





* 'out/target/product/<product_name>/kernel'에서 필요로 하는 타겟 'vendor/marisstella/<product_name/kernel'를 만들 규칙이 없습니다. 멈춤.

 make: *** `out/target/product/A1234/kernel'에서 필요로 하는  타겟 `vendor/marisstella/A1234/kernel'를 만들 규칙이 없습니다.  멈춤.
make: *** 끝나지 않은 작업을 기다리고 있습니다....

vendor/<Comapny_name>/<product_name>/BoardConfig.mk 파일에
TARGET_NO_BOOTLOADER := true
TARGET_NO_KERNEL := true 을 추가합니다.




*'out/target/product/<product_name>/obj/SHARED_LIBRARIES/libaudioflinger_intermediates/
LINKED/libaudioflinger.so'에서 필요로 하는  타겟 `out/target/product/<product_name>/obj/lib
/libaudio.so'를 만들 규칙이 없습니다.  멈춤.


 make: *** `out/target/product/A1234/obj/SHARED_LIBRARIES/libaudioflinger_intermediates/LINKED/libaudioflinger.so'에서 필요로 하는  타겟 `out/target/product/A1234/obj/lib/libaudio.so'를 만들 규칙이 없습니다.  멈춤.
make: *** 끝나지 않은 작업을 기다리고 있습니다....

vendor/<Comapny_name>/<product_name>/BoardConfig.mk 파일에
BOARD_USES_GENERIC_AUDIO := true 을 추가합니다.




*make: *** `out/target/product/<product_name>/obj/SHARED_LIBRARIES/libcameraservice_intermediates/
LINKED/libcameraservice.so'에서 필요로 하는  타겟 `out/target/product/<product_name>/obj/lib/
libcamera.so'를 만들 규칙이 없습니다.  .
make: ***


 make: *** `out/target/product/A1234/obj/SHARED_LIBRARIES/libaudioflinger_intermediates/LINKED/libaudioflinger.so'에서 필요로 하는  타겟 `out/target/product/A1234/obj/lib/libaudio.so'를 만들 규칙이 없습니다.  멈춤.
make: *** 끝나지 않은 작업을 기다리고 있습니다....

vendor/<Comapny_name>/<product_name>/BoardConfig.mk 파일에
USE_CAMERA_STUB := true 을 추가합니다.



저작자 표시
Posted by Maris Stella
마리스텔라2010/07/15 14:57

아..다시 뭔가 해야겠다는 생각이 마구마구!! +_+
해야지.. 공부해야지 ㅋㅋㅋ
저작자 표시
Posted by Maris Stella