Make_Custom_Android(AOSP)

2019-03-22

Android Open Source Project 인 AOSP에 대해 설명합니다.

Android는 휴대용 오픈소스 운영체제이며, Google이 주도하는 오픈소스 프로젝트입니다.

안드로이드는 현재까지 나온 9, Pie 버전까지 소스를 공개하고 있습니다. 공개된 소스를 통하여 사용자는 자신만의 안드로이드를 만들 수 있습니다.

Custom 환경 즉 Rom을 간단하게 수정 후, 빌드하는 것으로 Cusom Rom을 제작하겠습니다.

대부분의 Custom 환경을 만들겠다는 의미는 안드로이드의 Rom 또는 Kernel을 수정을 하는 것을 의미합니다.

ROM

ROM은 보통 컴퓨터의 읽기 전용 메모리로 많이 언급되어집니다.

Android에서 언급하는 ROM은 읽기 전용 메모리와 전혀 상관 없습니다. Android에서의 Rom은 안드로이드 펌웨어를 의미합니다. 펌웨어의 범위는 Kernel을 뺀 나머지 전부라고 할 수 있습니다.

Custom Rom이라는 것은 결국 안드로이드 오픈 소스를 수정하여, 사용하겠다라는 의미로 말할 수 있습니다.

요구 사항

AOSP 빌드를 하기 위해서는 특정 기준을 넘어야 가능합니다.

기준을 넘지 못할 시, 메모리 부족 및 공간 부족으로 빌드가 중간에 멈추게 됩니다.

  • GingerBread 이상일 시 64비트 환경 필요
  • 최소 200GB 이상의 디스크 공간(소스 다운로드용 ) + 150GB 여분의 공간(빌드 용)
  • 최소 16GB RAM

환경 구축

  • Java 설치
sudo apt-get install openjdk-8-jdk
  • 필요패키지 설치
    sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip
    
  • 그 외 파이썬 및 git 설치

소스 다운로드

  • Repo 설치
    mkdir ~/bin
    PATH=~/bin:$PATH
    
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
  • 안드로이드 소스와 연결

AOSP 작업할 디렉토리 생성

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

git 설정

git config --global user.name "Your Name"
git config --global user.email "you@example.com"

android 기본에 repo 연결

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

android branch 설정(https://source.android.com/setup/start/build-numbers.html#source-code-tags-and-builds 여기 참고하면서 해야합니다.)

repo init -u https://android.googlesource.com/platform/manifest -b [안드로이드 버전 및 r종류]
  • 다운로드(시간 전나 걸림)
    repo sync
    

드라이버 바이너리 설치

AOSP를 빌드하기 위해서는 특정 기기에 대한 드라이버 바이너리가 필요합니다.

Pixel 시리즈 부터, 넥서스 시리즈 까지 구글에서 판매하는 모든 폰의 경우, 이러한 바이너리를 제공해줍니다.

이 말은.. 구글 폰 아니면 AOSP 활용 못한다는 뜻

https://developers.google.com/android/drivers

위의 url을 통해서 자신의 기기에 맞는 바이너리를 다운받고 아래 명령어를 활용합니다.

./extract-lge-bullhead.sh
./extract-qcom-bullhead.sh

커스터마이징

여러가지 소스를 자기 방식대로 수정해도 되지만… 여기서는 간단하게만 바꾸겠습니다.

/packages/apps/Setting/res/xml의 device_info_settings.xml 파일에 들어가면…

위의 그림처럼 소스를 추가합니다.(이 부분은 장치 정보에 특정 항목을 추가하거나, 정보를 수정하는 것입니다.)

빌드

명령어 실행

source build/envsetup.sh

명령어 실행 후 항목이 나오는데, 그 중 자신의 기기에 맞는 항목 선택

lunch

make 실행

make

빌드가 잘되면… out/target/product/장치 모델/img 파일이 생성되었다는 것을 확인 할 수 있습니다.

플래싱

이제 플래싱을 하여야합니다.

플래싱은 커스텀한 롬 즉, 펌웨어를 핸드폰에 로딩시키는 과정이라고 생각하시면 됩니다.

fastboot 명령어를 치기위해서는 fastboot 패키지가 필요하니… 설치하세요.

fastboot flash boot out/target/product/<device>/boot.img
fastboot flash recovery out/target/product/<device>/recovery.img
fastboot flash system out/target/product/<device>/system.img
fastboot flash vendor out/target/product/<device>/vendor.img
fastboot flash userdata out/target/product/<device>/userdata.img

결과

원래는 ROM Name이라는 항목이 없는데, 그 부분을 추가하였고, 저의 이름이 들어가있는거를 볼 수 있습니다.

#느낀거… 요즘 AOSP 빌드 6,8,9 버전 다 하고 있는데… ㅅㅂ

한번 에러뜨면, 하루 날라간다………………………………………………….

참고 사이트

AOSP

https://source.android.com/

build Custom Rom

https://www.talentica.com/blogs/build-custom-android-rom-using-android-open-source-projectaosp/