정보공간_1

[2기 강북 강동하] Nexus S기반의 프레임워크 컴파일과 플래싱 본문

IT 놀이터/Elite Member Tech & Talk

[2기 강북 강동하] Nexus S기반의 프레임워크 컴파일과 플래싱

알 수 없는 사용자 2012. 10. 23. 02:09

지난번 커널 컴파일 포스팅과 연달아서 이번에는 프레임워크를 빌드해서 플래싱 하는 것을 해보겠습니다.

개발환경은 지난번 커널 컴파일 관련 포스팅을 참고하세요

(http://blog.secmem.org/145)


먼저 원하는 폴더를 만들고 

mkdir ~/bin

PATH=~/bin:$PATH

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

chmod a+x ~/bin/repo


repo 사이트 추가 permission 설청을해줍니다

그뒤로 다운받고자 하는 폴더를 만들고

mkdir android_framework

해당 폴더에 들어갑니다.

cd android_framework

해당 폴더에 들어와서 repo init 을 이용하여 원하는 버전을 설정합니다.


이 포스팅은 android 4.0.4 버전을 기준으로 썻습니다.

repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.4_r4

마지막으로 repo sync 를 수행하여서 소스코드를 받아줍니다.


소스코드받는 시간은 약 10~30 분정도 소요됩니다. 


진저브레드 당시에는 소스코드만 다운받으면 바로 컴파일이 가능했지만 ics 부터는 하드웨어에 의존적인 설정을 추가로 해주어야합니다.


nexus 의 경우에는 http://code.google.com/android/nexus/drivers.html 사이트에서 받을수있습니다.


해당사이트에 접속후 nexus s crespo 항목에서 4.0.4 페이지로 들어갑니다.

그러면 5개의 링크가 존재합니다.

Orientation Sensor, Wifi,Bluetooth,GPS, Graphics, NFC, GSM 관련 sh 입니다.

5개의 링크를 모두 받은뒤 압축을 풀고 sh 파일들을 아까 프레임워크 소스코드의 위치로 이동시켜줍니다.


해당 디렉터리내에서 sh을 모두 수행해여 줍니다.

sh extract-akm-crespo.sh

sh extract-broadcom-crespo.sh

등 다섯개를 모두 수행시켜줍니다.


source build/envsetup.sh 을 수행하여 빌드 환경을 설정해주고

lunch 를 입력하면 해당되는 디바이스를 선택하는 화면이 나옵니다. 

그때 해당 디바이스에 맞는 번호를 선택하여줍니다.

nexus s 는  crespo 에 해당 되는 번호를 선택하면됩니다.


마지막으로 make 를 수행하면 프레임워크가 빌드됩니다. 

프레임워크의 결과물은

프레임워크디렉터리/out/target/product/crespo 디렉터리 내에 존재합니다.

system.img boot.img ramdisk.img recovery.img userdata.img 등이 존재합니다

각각 해당되는 파일을 타겟디바이스(Nexus S) 에 플래싱 하면됩니다.


플래싱방법은 지난번 포스팅을 참조하시면됩니다.


fastboot 를 이용하여

fastboot flash system out/target/product/crespo/system.img 와 같은 방법으로 플래싱 할 수 있습니다.

같은 방식으로 boot 이미지나 recovery영역 또 플래싱할수있습니니다.