Android 오픈 소스 프로젝트에서 커스텀 ROM을 빌드하는 방법

출처 AOSP (Android 오픈 소스 프로젝트)로 알려진 .



이제 AOSP에 대한 것은 순수한 소스 코드가 포함되지 않습니다 장치 별 하드웨어 속성. 평신도의 관점에서 카메라 및 GPU와 같은 하드웨어는 AOSP로 개발할 때 '즉시'작동하지 않습니다. 실제로 이러한 하드웨어 바이너리 없이는 장치가 부팅되지 않습니다.

Google 브랜드 휴대 전화 (Pixel, Nexus 등) 용으로 개발하는 경우 하드웨어 바이너리를 찾을 수 있습니다. Google에서 직접 ,이 가이드는이를 구하여 ROM에 구축하는 과정을 안내합니다. 하지만 브랜드 휴대 전화 (Sony, Samsung 등) 용 ROM을 개발 중이라면… 음, 마음을 축복 해주세요.



약간 제조업체는 개발자가 될 개발자를위한 자체 오픈 소스 프로젝트 또는 릴리스 개발 도구를 보유하고있는 반면, 다른 제조업체는 독점 코드를 엄격하게 관리합니다. 다음은 인기있는 제조업체의 오픈 소스 프로젝트에 대한 간략한 목록입니다.



삼성 오픈 소스 릴리스 센터
소니 개발자 세계
Lenovo 지원
Huawei 오픈 소스 릴리스 센터
모토로라 개발자



이 과정에서 벗어나 Google Pixel 기기 용으로 가장 기본적인 기본 Android 환경을위한 ROM을 구축하고 있다는 가정하에 계속하겠습니다. 이 지식을 바탕으로 독자적으로 확장하여 특정 제조업체 ROM의 맞춤형 버전 개발을 시작할 수 있습니다.

이 가이드의 요구 사항 :

  • Android 오픈 소스 프로젝트
  • Pixel XL 휴대 전화 또는 Linux 용 Android 에뮬레이터
  • 64 비트 Linux 운영 체제 – 우분투 또는 리눅스 민트 가장 초보자 친화적 인 배포판이지만 BBQLinux Android 개발자를 염두에두고 특별히 개발되었습니다.
  • 파이썬
  • 강력한 컴퓨터 (코드 컴파일에는 많은 메모리와 공간이 필요합니다!)

빌드 환경 설정

Linux 컴퓨터에서 Android 에뮬레이터를 설정하는 것으로 시작하겠습니다. Google Pixel XL 기기가 있든 없든 Android 에뮬레이터에서 새 ROM을 사용해 보는 것이 항상 가장 안전합니다. 전에 장치로 깜박입니다. 제가 개인적으로 좋아하는 것은 Genymotion이므로 특정 에뮬레이터를 설치하는 방법을 안내해 드리겠습니다. 그러나이 가이드 ' 최고의 Android 에뮬레이터 ”, 대부분이 Linux와 호환되기 때문입니다.

로 향하십시오 Genymotion 웹 사이트 , 계정을 등록하고 이메일을 통해 확인한 다음 Linux 데스크톱에 실행 파일을 다운로드합니다.



이제 Linux 터미널을 열고 다음을 입력하십시오.

Chmod + x genymotion-xxxxx.bin (xxxx를 파일 이름의 버전 번호로 대체)
./genymotion-xxxxxx.bin

프레스 Genymotion 디렉토리를 만듭니다. 이제 터미널에 입력하십시오.

cd genymotion && ./genymotion

이제 설치 프로세스를 시작하라는 메시지가 표시되므로 가상 장치 추가 창에 도달 할 때까지 계속 다음을 클릭하십시오. Device Model 옵션에서“Pixel XL”을 선택하고 설치를 완료합니다. 원하는 경우 가상 장치를 테스트 할 수 있습니다. 기본적으로 데스크톱에 Pixel XL 휴대 전화가있는 것과 같습니다.

이제 Python을 설정해 보겠습니다.

$ apt-get 파이썬 설치

이제 Linux 시스템에 Java Development Kit를 설정해야합니다. Linux 터미널을 열고 다음 명령을 입력하십시오.

$ sudo apt-get 업데이트
$ sudo apt-get install openjdk-8-jdk

이제 USB 장치 액세스를 허용하도록 Linux 시스템을 구성해야합니다. Linux 터미널에서 다음 코드를 실행합니다.

이렇게하면 앞서 언급 한 USB 장치 액세스를 허용하는 필수 51-android.txt 파일이 다운로드됩니다. .txt 파일을 열고 Linux 사용자 이름을 포함하도록 수정 한 후 .txt 파일을 다음 위치에 배치합니다. (로 루트 사용자 ). 이제 새 규칙이 자동으로 적용되도록 USB를 통해 장치를 컴퓨터에 연결합니다.

Android 소스 다운로드

AOSP는 Git에서 호스팅되므로 Repo라는 도구를 사용하여 Git과 통신합니다.

먼저 홈 디렉토리에 / bin 폴더를 설정해야합니다. Linux 터미널에 다음 명령을 입력하십시오.

$ mkdir ~ / 빈
$ 경로 = ~ / bin : $ PATH

이제 Repo 도구를 다운로드하므로 Linux 터미널에 다음을 입력합니다.

$ curl https://storage.googleapis.com/git-repo-downloads/repo> ~ / bin / repo
$ chmod a + x ~ / bin / repo

Repo가 설치되면 이제 작업 파일을 보관할 빈 디렉토리를 만들어야합니다. 따라서 다음을 Linux 터미널에 입력하십시오.

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

이제 이름과 이메일 주소로 Git을 구성하겠습니다. 정기적으로 확인하는 Gmail 주소 사용 , 그렇지 않으면 Gerrit 코드 검토 도구를 사용할 수 없습니다.

$ git config –global user.name“Your Name”
$ git config –global user.email
you@gmail.com

이제 Repo에게 Git에서 AOSP의 최신 마스터 매니페스트를 가져 오도록 지시합니다.

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

성공적으로 완료되면 작업 디렉토리에서 Repo가 초기화되었다는 메시지를 받게됩니다. 또한 ' .repo” 클라이언트 디렉토리 내의 디렉토리. 이제 다음을 사용하여 Android 소스 트리를 다운로드합니다.

$ repo 동기화

Android 소스 빌드

이 가이드의 시작 부분에서 언급 한 하드웨어 바이너리가 작동하는 곳입니다. 로 향합시다 AOSP 드라이버 페이지에서 Android 7.1.0 (NDE63P) 용 Pixel XL 바이너리를 다운로드하세요. 공급 업체 이미지와 하드웨어 구성 요소를 모두 다운로드하려고합니다. 압축 된 아카이브로 제공되므로 데스크탑에 압축을 풀고 루트 폴더에서 자동 압축 풀기 스크립트를 실행하십시오. 이전에 만든 WORKING_DIRECTORY의 루트에 바이너리를 설치하도록 선택합니다.

이제 Linux 터미널에 입력하십시오.

$ clobber 만들기
$ 소스 build / envsetup.sh

이제 빌드 할 대상을 선택하므로 다음을 입력합니다.

$ 점심 aosp_marlin-userdebug
$ setpaths
$ make –j4

이제 소스에서 Android ROM을 '빌드'했습니다. 이제 터미널에 입력하여 에뮬레이터에서 테스트 해 보겠습니다.

$ 에뮬레이터

그러니 에뮬레이터에서 약간 놀아보세요. 보시다시피 순전히 바닐라 Android 경험은 매우 적으며 제조업체가 AOSP를 필요에 맞게 사용자 정의하는 이유입니다. 그래서 당신은 할 수 있었다 원하는 경우 장치에 방금 구축 한이 ROM을 플래시하지만 개선 사항을 추가하지 않으면 순수하게 바닐라 Android 경험이 실제로 매우 지루할 것입니다.

따라서 제조업체가 일반적으로 AOSP를 사용하여 수행하는 작업은 포크, 자체 고유 바이너리 추가, UI 사용자 지정, 부팅 로고 추가 등입니다. 제조업체는 기본적으로 재고 Android ROM 위에 페인트를 칠하기 만하면 다음 목표가됩니다. .

이 가이드의 두 번째 부분에서는 ROM에 글꼴, 테마 및 부팅 애니메이션을 추가하는 과정을 살펴볼 것입니다.

5 분 읽기