WSL2에서 AOSP를 구축하여 안드로이드 에뮬레이터를 시작합니다.

9668 단어 AndroidWSLaosptech
의외로 안드로이드 Open Source Project(AOSP)를 구축할 기회가 있었지만 건축 조건에 맞는 리눅스 기계를 바로 준비하지 못했다.이 기사는 AOSP를 잘못 구축하고 시뮬레이터를 시작하려는 실제 로그입니다.
결론적으로 Windows 11 기기를 보유한 WSL2는 시뮬레이터를 가동할 수 있다.에뮬레이터 자체도 Windows가 아닌 Linux에서 작동하지만, 생각보다 동작이 바삭바삭해 실제 적용을 견뎌낼 수 있을 것 같아 이 글을 썼다.AOSP 구축과 WSL2의 실용성을 확인한 미스터리 기사다.

AOSP의 구성 요소


구축필요조건이지만 하드웨어는 고규격의 기계가 필요하다.
  • 디스크 용량: 코드 검사용 250GB 이상, 구축 시 150GB
  • 스토리지: 16GB 이상(64GB 이상 권장)
  • 구글 내부에는 2021년 6월까지 64GB 램을 탑재한 72코어 기기가 사용됐다.이 구성의 전체 구축 시간은 약 40분입니다(증분 구축의 경우 수정된 파일 수에 따라 달라지지만 거의 몇 분 후에 완료될 수 있습니다).한편 램의 용량이 같은 6핵심 기기는 이 작업에 3시간이 걸린다.
    그래서 AOSP의 거대함을 볼 수 있다.OS는 Ubuntu LFS를 권장하지만 적합한 Linux가 있으면 상당히 좋다.
    필자는 평소에 맥을 사용하는데 게임이 윈도 기계이기 때문에 구축을 시도했다.필자의 기계는 다음과 같다.
  • OS: Windows 11 Pro 구축 22000.556
  • CPU: Ryzen 5600X(6코어, 12스레드)
  • RAM: 64 GB
  • SSD: 1TB
  • CPU에는 그래픽 기능이 없어 기본적으로 grambo가 탑재됐지만, 구축과는 상관이 없다고 생각한다.물리적 기계로서 상술한 것을 준비했지만, WSL2로 구축되어 있기 때문에 규격이 상한선(실제 분배된 자원이 더욱 적음)을 고려해 주십시오.

    WSL2에서 Ubuntu 설정


    WSL 자체 설치가 중단되었습니다.공식문서을 참고하세요.

    Ubuntu 설치


    Windows Terminal 을 사용하여 다음 명령을 입력하여 설치할 수 있습니다.
    wsl --install -d Ubuntu-18.04
    
    LTCS도 20.04였지만 구축 환경의 구축에 18.04라고 쓰여 있어서 합쳤다.내 생각에는 아마 아무런 변화가 없을 것 같다.

    WSL VM에 대한 리소스 할당 설정


    설치만 했다면 디스크와 메모리 등 자원을 완전히 사용할 수 없었을 것이다.기본적으로 WSL2의 가상 하드 드라이브는 최대 256GB로 제한됩니다.문서WSL2 가상 하드 드라이브 크기 확장에 따라 가상 하드 드라이브를 확장해야 합니다.필자는 500GB를 WSL에 할당했다.메모리는 필자의 환경에서 32GB가 분배되었기 때문에 이렇게 전진해 보았다.
    WSL 고급 문서 WSL2VM에 스토리지 할당 정보
    Windows는 전체 메모리의 50% 또는 8GB 중 하나를 적게 사용합니다.20175 이전 구축 시 전체 Windows 메모리는 80%
    이런 기술이 있었지만 필자는 50%를 배정받았다.변경하려면 wslconfig라는 설정 파일에서 설정합니다.

    구축에 필요한 패키지 설치


    구축 요구 사항에 따라 필요한 패키지를 설치합니다.
    sudo apt-get update
    sudo apt-get install -y git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
    

    Repo 설치


    AOSP의 소스 코드를 복제하려면 Repo가 필요합니다.ASOP의 소스 코드는 방대한 수의 Giit 창고로 구성되어 있습니다.리포는 여러 Giit 창고를 손쉽게 처리할 수 있는 Giit 명령의 잠금 레지스터다.
    설치는 문서 방법에 따라 시도했지만 순조롭게 진행되지 않아 아래 명령을 사용하여 설치했다(GPG 키를 얻을 수 없는 오류가 발생하여 WSL 환경의 문제일 수 있다).
    mkdir ~/bin
    PATH=~/bin:$PATH
    curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    chmod a+x ~/bin/repo
    

    KVM 설정


    위의 Repo로 설정하면 구문을 완료할 수 있습니다.구축 후 시뮬레이터를 이동하기 위해서는 KVM을 설정해야 합니다.시뮬레이터는 GUI 애플리케이션이 Ubuntu에서 실행될 수 있는지 의심할 수 있지만, Windows 11에서 WSL2는 Linux의 GUI 애플리케이션을 시작할 수 있다.
    Linux용 Windows 서브시스템에서 Linux GUI 응용 프로그램 실행
    KVM은 Linux에서 안드로이드 에뮬레이터의 하드웨어 가속을 사용하기 위해 필요합니다.문서에 따르면 Ubuntu에 KVM을 설정하면 되지만 필자의 기억이 정확하다면 Ubuntu를 설치하는 단계에서 KVM은 이미 유효하다.다만, 루트 사용자에게만 유효하기 때문에 실행 사용자도 사용할 수 있다.
    사용자가 KVM을 사용할 수 없으면 에뮬레이터를 실행하는 동안 오류가 발생합니다.이 오류에 따라kvm 그룹을 만들고 실행 사용자를 그룹에 추가합니다.
    sudo groupadd -r kvm
    sudo gpasswd -a $USER kvm
    
    추가된 그룹/dev/kvm의 그룹이 뿌리에서kvm로 바뀌면 되지만 이렇게 되면 다시 시작하면 뿌리로 돌아간다.따라서 시작할 때 권한을 편집합니다/etc/wsl.conf.없으면 /etc/wsl.conf 하세요.
    # /etc/wsl.conf
    [boot]
    command = /bin/bash -c 'chown root:kvm /dev/kvm && chmod 660 /dev/kvm'
    
    여기 아래 issue를 참고하였습니다.
    https://github.com/microsoft/WSL/issues/7149

    AOSP 구축


    Repo를 통한 소스 코드 제거


    디렉토리 만들기
    mkdir aosp
    cd aosp
    
    git가 리포에서 이동하기 때문에git를 미리 설정합니다
    git config --global user.name Your Name
    git config --global user.email [email protected]
    
    체크아웃 창고
    ANDROID_BRANCH="android-11.0.0_r48"
    REPO_MANIFEST="https://android.googlesource.com/platform/manifest"
    repo init -u $REPO_MANIFEST -b $ANDROID_BRANCH
    repo sync -c -j8 # -jn でスレッド数を指定する
    
    상기 명령에 AOSP로서의 수정 버전android-11.0.0_r48이 지정되어 있다.나는 수정판에서 manifest의 지점과 라벨을 지정할 수 있다고 생각하지만, 가져온 수정판을 만들 수 있는지 없는지는 시도하지 않으면 모른다.필자는 참고 문서소스 코드 레이블 및 구축를 참고하여 수정판을 결정하였다.지정된 개정판은 글을 쓰는 단계에서 안드로이드 11의 최신 개정판이다.
    처음repo sync에 100GB의 주문이 들어오는 창고여서 시간이 오래 걸린다.원본 코드를 가지고 있어도 repo initrepo sync 사이를 다른 수정판으로 전환할 수 있다.

    구축


    다음 명령을 사용하여 구성할 수 있습니다.
    # 環境の初期化
    . build/envsetup.sh
    
    # ビルドターゲットの指定
    lunch aosp_x86_64-eng
    
    # ビルド
    m -j12
    
    build/envsetup.sh를 실행하면 후속lunch 명령을 사용할 수 있다.lunch 명령aosp_x86_64-eng을 통해 대상을 지정합니다.지정된 대상lunch에서는 명령이 매개변수 없이 실행되는지 확인할 수 있습니다.대상의 이름은 문서에서 확인할 수 있습니다.예를 들어 aosp_car_x86_64-userdebug처럼 지정하면 차량용 OS를 위한 안드로이드 오토모티브 OS도 구축할 수 있다.
    마지막 m 명령을 사용하여 실행을 구축합니다.m 명령은 asp 디렉터리의 맨 위에서 실행됩니다make. (asp 디렉터리의 어디에서든 맨 위에서 실행됩니다).-jn에서 스레드 수를 지정합니다.필자의 환경에서m -j12는 150분 정도 걸린다.구글 내부 구성에서는 전체 건물에서 40분 정도여서 힘의 차이를 보였다.하드웨어의 구성이 말을 할 줄 알기 때문에 자체 제작 PC의 기준으로 AOSP를 구축하는 것이 재미있지 않을까 싶습니다.

    시뮬레이터 실행


    구축이 완료되면 다음 명령을 사용하여 시뮬레이터를 실행할 수 있습니다.
    emulator
    
    구축목표aspx86-64-eng 에뮬레이터
    ビルドターゲット aosp_x86-64-eng のエミュレータ
    대상 asp 구축x86-64-eng 에뮬레이터
    대상 asp 구축car_x86_64-userdebug 에뮬레이터
    ビルドターゲット aosp_car_x86_64-userdebug のエミュレータ
    대상 asp 구축car_x86_64-userdebug 에뮬레이터
    WSL2에서 Linux의 GUI 애플리케이션이 정상적으로 시작되어 감동을 받았습니다.아날로그를 시작할 때 다음과 같은 정보가 있습니다: Nested Virtualization을 사용해서 조작하는 것을 추천하지 않지만 간단하게 조작하는 것은 문제가 없습니다.
    Nested Virtualization
    에뮬레이터의 실행 환경은 KVM on WSL VM으로 구성되며 VM이 중첩되면 이러한 정보가 표시됩니다.

    최후


    Windows 시스템으로 AOSP를 구축하면 에뮬레이터도 시작할 수 있습니다.다만, 실제 AOSP 개발이 Windows 머신으로 가능할지는 불투명하다.어쨌든 WSL2와 Windows의 진화는 나를 놀라게 했다.
    앞으로 하고 싶은 거.
  • PC의 패브릭을 바꾸려는 경우 어쨌든 빠른 구축(Google 이기려는 경우)
  • AOSP의 맞춤형 ROM을 만들고 싶다
  • WSL2에서의 OSP 개발이 실용적인지 조사하고 싶다
  • 좋은 웹페이지 즐겨찾기