LineageOS는 CyanogenMod의 포크 후속 프로젝트로, 현재 가장 인기 있는 안드로이드 커스텀 롬입니다. 200개가 넘는 폰 모델에 포팅되어 있으며, 순정 안드로이드 경험과 비교해 훨씬 다양한 기능을 제공합니다.
하지만 LineageOS가 포팅된 기기가 많은 만큼, 아직 지원되지 않는 기기도 더 많습니다. 이번 Appual's 가이드에서는 Windows 10 환경에서 LineageOS를 빌드하는 방법을 간단하고 쉽게 소개합니다. 다만 주의할 점은, 이 가이드만으로 여러분의 기기에 바로 설치 가능한 롬이 완성되는 것은 아니라는 점입니다. 이 가이드의 목적은 공식 Git 저장소에서 LineageOS를 빌드할 수 있도록 Windows 10 환경을 준비하는 것입니다.
또한 리눅스 명령어 터미널 사용과 안드로이드 롬 빌드에 어느 정도 익숙해야 합니다. 초보자를 위한 가이드가 아니기 때문입니다. 롬 빌드가 처음이라면 AOSP 기반 커스텀 롬 빌드 관련 가이드를 먼저 참고하시기 바랍니다.
커스텀 롬 빌드와 DIY 안드로이드 튜토리얼에 관심이 있다면 아래 가이드들도 확인해 보세요:
- 안드로이드용 TWRP 직접 포팅 방법
- 안드로이드 시스템 UI 수동으로 테마 적용하기
- AOSP 기반 커스텀 롬 빌드 방법 | Part 2
빌드 환경 요구 사항
- Windows 10 (64비트) — SSD에 설치된 환경 권장
- 최소 16GB RAM (컴파일 작업에 많은 리소스가 필요합니다!)
WSL(Windows Subsystem for Linux) 설정하기
핵심 아이디어는 간단합니다. 빌드 환경을 위해 Windows Subsystem for Linux(WSL)를 구성하는 것입니다. 많은 분들이 간과하지만, 필요한 대부분의 요소는 Microsoft Store에서 손쉽게 구할 수 있습니다.
1단계: Ubuntu 18.04 설치
먼저 Microsoft Store를 열고 'Ubuntu 18.04'를 검색한 뒤 앱을 설치합니다.
다음으로 Ubuntu 18.04 앱을 실행하여 초기 설정 마법사를 진행합니다.
2단계: 필수 패키지 설치
Ubuntu 터미널을 열고 아래 패키지들을 설치합니다:
sudo apt install android-sdk-platform-tools bc build-essential ccache curl g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop m4 openjdk-8-jdk pngcrush repo rsync schedtool squashfs-tools xsltproc zip zlib1g-dev
3단계: 소스 코드 디렉터리 생성 및 저장소 초기화
소스 코드를 담을 새 디렉터리를 만들고 해당 위치로 이동합니다:
mkdir -p ~/android/lineage && cd android/lineage
이제 LineageOS 소스 저장소를 초기화합니다:
repo init -u https://github.com/LineageOS/android.git -b lineage-15.1
4단계: 로컬 매니페스트 추가
.repo/local_manifests/roomservice.xml 파일에 아래 코드를 추가합니다. (파일이 없다면 새로 생성하면 됩니다)
<project name="TheMuppets/proprietary_vendor_기기 브랜드명" path="vendor/기기 브랜드명" remote="github" />
5단계: 소스 코드 동기화
repo sync
ccache로 빌드 속도 높이기 (선택 사항)
이 단계는 선택 사항이지만, 빌드 속도를 크게 단축할 수 있으므로 캐싱(caching)을 활성화하는 것이 좋습니다. 'ccache'를 통해 설정합니다.
~/.bashrc 파일에 아래 줄을 추가합니다:
export USE_CCACHE=1
그런 다음 ccache가 사용할 최대 디스크 용량을 지정합니다:
ccache -M 50G
'50G' 부분은 원하는 값으로 변경하세요. 할당할 캐시 용량(GB)을 의미합니다. 한 대의 기기만 빌드한다면 25G~50G면 충분하지만, 동일한 커널 소스를 공유하지 않는 여러 기기를 빌드한다면 75~100G 정도로 늘리는 것이 좋습니다. 어떤 경우든 ccache를 활용하면 빌드 시간을 상당히 절약할 수 있습니다.
빌드 준비 및 실행
다음으로 아래 커밋을 체리픽(cherrypick)합니다:
source build/envsetup.sh && repopick -t wsl-compile
그리고 기기별 코드를 준비합니다:
breakfast 기기 코드명
64비트 bison과 ijar를 빌드합니다:
make bison && make ijar
BISON_EXEC에 64비트 버전 bison을, IJAR_EXEC에 수정된 ijar를 실행하도록 설정합니다:
export BISON_EXEC=~/android/lineage/out/host/linux-x86/bin/bison
export IJAR_EXEC=~/android/lineage/out/host/linux-x86/bin/ijar
(명령줄을 다시 열 때마다 매번 입력하기 번거롭다면 ~/.bashrc에 해당 명령어를 추가하세요.)
이제 빌드를 시작할 수 있습니다!
brunch 기기 코드명
향후 빌드 시 유의 사항
이후 다시 빌드할 때는 .repo/local_manifests 추가, ccache 활성화, BISON_EXEC 및 수정된 IJAR 설정 단계만 반복하면 됩니다.
또한 디렉터리를 초기화(flush)할 때마다 make bison && make ijar를 다시 실행해야 합니다.
마지막 주의 사항
- Windows에서 리눅스 파일을 추가하거나 수정하지 마세요. bash에서 파일이 손상될 가능성이 높습니다. 반드시 리눅스 서브시스템 내부에서 작업하세요.
- /mnt를 이용해 다른 드라이브에 소스 코드를 받은 후 이 가이드를 따라 하지 마세요. 소스 코드는 반드시 리눅스 서브시스템 내부의 폴더에만 다운로드해야 합니다!