방법은 팩토리 이미지를 다운받아 초기화 하는 방법이 있는데, 이번 포스팅에서는 팩토리 이미지를 이용하여 안드로이드를 초기화 하는 방법을 설명한다.

 

팩토리 이미지를 적용하기 전, 해당 기기는 USB 디버깅 모드가 설정되어 있어야 하며, 설정 방법은 이전 포스팅에서 설명을 하였다.
USB 디버깅 모드 설정 : 2017/05/02 - [Android] - 안드로이드 USB 디버깅 모드 설정

 

아래 링크에서 해딩 기기와 원하는 안드로이드 버전의 팩토리 이미지를 다운 받을 수 있다.

Android Factory Imagehttps://developers.google.com/android/nexus/images

동의 버튼을 누르면 페이지가 펼쳐지고 해당 기기와 원하는 안드로이드 버전 선택이 가능하다.

 

 


해당 파일을 압축 풀면 다음과 같이 팩토리 이미지를 플래싱 할 수 있는 쉘 스크립트가 나온다.

 


 

adb 명령어로 기기가 정상적으로 연결되어 있는지 확인

$ adb devices

 



adb 명령어로 bootloader 모드로 리부팅 

$ adb reboot bootloader

 

 


flash-all을 실행하여 팩토리 이미지 적용

$ ./flash-all.sh

  (참고 : Windows 환경에서는 flash-all.bat를 실행)



 

다음과 같이 팩토리 이미지가 모두 업로드 완료되면 자동으로 리부팅되며, 새로운 버전의 안드로이드가 뜨는 것을 확인할 수 있다.

 

 

이번 포스팅은 안드로이드 OS 풀 소스를 안드로이드 에뮬레이터 환경에 맞춰 빌드하는 과정과 빌드 완료 후, 안드로이드 에뮬레이터에 생성된 이미지 파일을 플래싱하여 구동시키는 것을 설명한다.

출처 : http://source.android.com/source/building.html

 

 

1. 빌드 환경 설정

$ source build/envsetup.sh

 

 

 

2. 빌드 하드웨어 타겟 설정​

다음의 명령어를 입력하여 원하는 기기에 맞는 항목을 선택한다.

$ lunch

 

안드로이드 에뮬레이터에 빌드가 완료된 이미지를 올릴 것이므로 9. mini_emulator_arm64_userdebug를 선택하였다.

 

 

 

3. 빌드 시작 (참고 : VM환경 - CPU : Intel Core i5-4690K 3.50GHz, RAM : 4GB, 약 2시간 30분 소요)

​  - 빌드 시 "-j"뒤 숫자는 CPU 코어의 2배를 하면 된다.

$ make -j8

 


 


 

다음과 같이 약 2시간 30분만에 빌드에 성공하였다.

 

 

4. 빌드 결과물 확인

$ cd out/target/product/{CodeName}

  ex) cd out/target/product/mini-emulator-armv7-a-neon

 

 

 

5. 안드로이드 에뮬레이터 SDK 다운로드

$ cd /android_sdk_path/android-sdk-linux/tools/

$ ./android

  - Android SDK Build-tools 

  - Android Version (API Version) (Repo에서 받은 API 버전과 맞춰서 다운로드)


 

 

6. 설치된 에뮬레이터 이미지 파일을 컴파일 된 이미지로 교체

$ cp /root/work/out/target/product/mini-emulator-armv7-a-neon/ramdisk.img  /android_sdk_path/android-sdk-linux/system-images/android-22/default/armeabi-v7a/

$ cp /root/work/out/target/product/mini-emulator-armv7-a-neon/system.img  /android_sdk_path/android-sdk-linux/system-images/android-22/default/armeabi-v7a/

$ cp /root/work/out/target/product/mini-emulator-armv7-a-neon/userdata.img /android_sdk_path/android-sdk-linux/system-images/android-22/default/armeabi-v7a/


 

 

7. 안드로이드 에뮬레이터 생성 및 실행

  - ​(기존 생성된 에뮬레이터가 있다면, cache 문제가 될 수 있으므로 삭제 후 새로 생성)

 

 


다음과 같이 컴파일된 Mini-Emulator가 구동이 된다. Mini-Emulator로 빌드하였기 때문에 테스트 카메라 앱과 설정 앱만 존재하며, 기본 앱들이 탑재된 이미지를 빌드하고 싶다면 빌드 시, 1. aosp_arm_eng​를 선택하여 빌드 후 동일한 방법으로 이미지를 생성하여 올리면 된다.

 

 

이번 포스팅은 안드로이드 OS 풀 소스를 Nexus 4 실제 기기 기준에 맞춰 빌드하는 과정과 빌드 완료 후, Nexus 4 기기에 생성된 이미지 파일을 플래싱하여 구동시키는 것을 설명한다.

출처 : http://source.android.com/source/building.html

 

안드로이드 OS 풀 소스 빌드 시, 기기에 적용하기 위해서는 해당 기기의 드라이버 바이너리 파일을 적용하여야 하며, 드라이버 바이너리 파일을 적용하지 않고 빌드 후 기기에 적용할 경우, 다음과 같이 Android 로고 화면에서 넘어가지 않는다.

 

 


그 이유로는 해당 기기의 지원하는 드라이버가 설치되어 있지 않아 발생하는 문제인데, 이를 해결하기 위해서는 각각의 기기별 지원하는 드라이버 바이너리 파일들을 다운 받은 소스 코드에 적용 시키고 난 후 빌드를 해야한다.

 

 

1. 드라이버 바이너리 파일 다운로드 및 적용

각각 기기별 안드로이드 버전에 대한 드라이버는 아래에서 다운 받을 수 있다.
Android Device Driver https://developers.google.com/android/nexus/drivers

 

테스트 환경 기기는 Nexus 4이고, OS 버전은 Build:LMY48T / Branch:android-5.1.1_r19​ 이므로, 해당 환경과 동일한 드라이버를 다운로드 하였다.

 


 

해당 기기와 빌드할 안드로이드 버전을 선택하여 다운 받는다.

$ get Link_URL



 

각각의 드라이버 파일을 다운받아 압축을 풀면, 압출 파일당 하나의 쉘 스크립트가 나온다.

 

 


각각의 쉘 스크립트를 다운받은 소스 코드 경로에서 실행시켜, 드라이버 바이너리 파일들을 소스 코드에 적용한다.

 

 


해당 쉘 스크립트를 실행하면 다음과 같의 라이센스에 대한 내용이 나온다.

 


 

"more" 명령어를 이용하여 원문을 보여주기 때문에 Skip을 원한다면 Ctrl+C 키로 Skip 하고, "I ACCEPT"를 정확하게 입력하여 적용한다.

 


 

다운 받은 쉘 스크립트들을 실행하여 각각의 드라이버 파일들이 소스 코드에 적용되면, 기기에 적용할 이미지 파일 생성 빌드 환경 구성이 완료된다.

 

 

2. 빌드 환경 설정

$ source build/envsetup.sh

 

 

 

3. 빌드 하드웨어 타겟 설정​

  - 다음의 명령어를 입력하여 원하는 기기에 맞는 항목을 선택한다.

$ lunch


Nexus 4 기기에 빌드가 완료된 이미지를 올릴 것이므로 13. aosp_mako-userdebug를 선택하였다.

기기의 코드네임을 모를 경우 아래에서 해당 Nexus에 알맞은 코드네임을 찾아서 선택하면 된다.

Android Factory Imagehttps://developers.google.com/android/nexus/images

 

 

 

4. 빌드 시작 (참고 : VM환경 - CPU : Intel Core i5-4690K 3.50GHz, RAM : 4GB, 약 2시간 30분 소요)
​빌드 시 "-j"뒤 숫자는 CPU 코어의 2배를 하면 된다.

$ make -j4

 

 


 


5. 빌드 결과물 확인

$ cd out/target/product/{CodeName}

  ex) cd out/target/product/mako


  

 


6. 기기에 빌드된 이미지 적용

​생성된 이미지 경로를 export 한다.

$ export ANDROID_PRODUCT_OUT=/root/work/out/target/product/{코드네임}

  ex) export ANDROID_PRODUCT_OUT=/root/work/out/target/product/mako


adb 명령어로 기기가 정상적으로 연결되어 있는지 확인

$ adb devices

 

 

 

adb 명령어를 이용하여 부트로더로 리부팅한다.

$ adb reboot bootloader

 


 

Fastboot 명령어로 디바이스에 이미지를 플래싱 한다.

 $ fastboot flashall


 


다음과 같이 모델 번호와 빌드 번호가 AOSP on Mako로 빌드한 이미지가 올라간 것을 확인할 수 있다.

 


 

+ Recent posts