macOS에서 AOSP 빌드

7057 단어 kernelandroidmacos
이 게시물에서는 macOS에서 Android 소스 코드를 빌드하는 방법을 살펴봅니다.

부인 성명:
  • Mac에서 AOSP 구축이 공식적으로 지원되지 않습니다. 따라서 모든 도구를 구축할 수는 없습니다.
  • 아래 언급된 단계는 macOS Monterey용입니다. 다른 버전의 경우 단계가 유사할 수 있습니다.

  • 1단계: 파일 시스템 설정



    APFS(Apple File System)라고 하는 macOS 10.13 이상의 기본 파일 시스템은 대소문자를 구분하지 않습니다. 하지만 AOSP를 빌드하려면 대소문자를 구분하는 파일 시스템이 필요합니다. 기본 파일 시스템에서 빌드를 시도하면 아래 메시지와 함께 빌드가 시작되지 않습니다.

    20:48:42 You are building on a case-insensitive filesystem.
    20:48:42 Please move your source tree to a case-sensitive filesystem.
    20:48:42 ************************************************************
    20:48:42 Case-insensitive filesystems not supported
    


    따라서 코드 다운로드를 시작하기 전에 먼저 대소문자를 구분하는 파일 시스템을 생성해야 합니다.
  • 열기 Disk Utility
  • 상단 메뉴에서 + 아이콘을 클릭합니다.
  • 볼륨에 원하는 이름을 지정하고 형식 섹션에서 APFS(대소문자 구분)를 선택한 다음 추가를 클릭합니다.

  • 선택적으로 원하는 경우 크기 옵션을 사용자 정의할 수 있습니다. 그러나 소스 코드를 다운로드하려면 시스템에 최소 130GB의 공간이 필요합니다.

  • 2단계: 소스 다운로드



    그래서 안드로이드 팀은 repo 이라는 유틸리티를 만들었습니다. 이 유틸리티는 여러 저장소를 관리하는 데 도움이 됩니다. 이 유틸리티를 사용하여 Android 소스를 다운로드할 것입니다.
    repo를 사용하여 brew를 설치합니다.

    ❯ brew install repo
    


    첫 번째 단계에서 생성한 볼륨 내에서 빌드하는 데 필요한 모든 리포지토리를 복제하려는 새 볼륨 내에 기본 디렉터리를 생성합니다. 바꾸다<volume_name> 정확한 이름.

    ❯ cd /Volumes/<volume_name> 
    ❯ mkdir source
    ❯ cd source
    


    이제 repo를 초기화합시다. 그러면 Repo 소스 코드용 Git 리포지토리와 Android 소스에 포함된 다양한 리포지토리의 위치를 ​​지정하는 매니페스트 파일이 있는 디렉토리.repo/가 생성됩니다. 또한 아래 명령은 git config에서 아직 설정하지 않은 경우 이름과 이메일을 묻습니다.

    ❯ repo init -u https://android.googlesource.com/platform/manifest
    Downloading Repo source from https://gerrit.googlesource.com/git-repo
    remote: Total 7372 (delta 3971), reused 7372 (delta 3971)
    Downloading manifest from https://android.googlesource.com/platform/manifest
    remote: Finding sources: 100% (98897/98897)
    remote: Total 98897 (delta 31617), reused 98888 (delta 31617)
    
    Your identity is: Your Name <email>
    If you want to change this, please re-run 'repo init' with --config-name
    
    repo has been initialised in /path/to/folder/
    If this is not the directory in which you want to initialise repo, please run:
       rm -r /path/to/folder/.repo
    and try again.
    


    이제 소스를 복제하십시오. 또한 -c 를 전달하는 것을 잊지 마십시오. repo 복제에만 마스터 분기를 알리고, 그렇지 않으면 모든 분기를 복제하려고 시도합니다. 선택적으로 -j 플래그를 전달하여 더 빠른 복제를 위해 스레드 수를 지정할 수 있습니다.

    ❯ repo sync -c -j8
    


    네트워크 대역폭과 시스템 처리 속도에 따라 위의 단계를 다운로드하고 체크아웃하는 데 시간이 걸립니다. 완료되면 아래 메시지가 표시됩니다.

    repo sync has finished successfully.
    /usr/local/Cellar/[email protected]/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/multiprocessing/resource_tracker.py:224: UserWarning: resource_tracker: There appear to be 17 leaked semaphore objects to clean up at shutdown
      warnings.warn('resource_tracker: There appear to be %d '
    


    위의 메시지를 받았다면 축하합니다 🥳 가장 많은 시간을 들여 조치를 취한 것입니다. 그러나 몇 가지 문제로 인해 실패하면 Troubleshooting steps을 시도하십시오. 아직도 해결되지 않았습니까? 그런 다음 아래에 댓글을 달면 해결하려고 노력할 것입니다.

    3단계: 환경 설정 및 빌드 구성



    빌드를 시작하기 전에 몇 가지 구성 단계가 필요합니다.
  • 명령 설정

  • Android 소스는 ​​빌드를 위한 몇 가지 도우미 명령을 제공하며 아래 명령을 사용하여 현재 세션의 경로에 추가할 수 있습니다.

    ❯ source build/envsetup.sh
    

    hmm 명령을 사용하여 추가된 모든 도우미 명령을 나열할 수 있습니다.
  • 빌드 대상 선택 중

  • 빌드 대상, 즉 lunch 명령을 사용하여 빌드하려는 제품 및 아키텍처를 선택할 수 있습니다. 인수 없이 점심을 실행하면 사용 가능한 구성 중 일부가 표시됩니다.

    ❯ lunch
    
    You're building on Darwin
    
    Lunch menu .. Here are the common combinations:
         1. aosp_arm-eng
         2. aosp_arm64-eng
         3. aosp_barbet-userdebug
         4. aosp_bramble-userdebug
         5. aosp_bramble_car-userdebug
         6. aosp_car_arm-userdebug
         7. aosp_car_arm64-userdebug
         8. aosp_car_x86-userdebug
         9. aosp_car_x86_64-userdebug
         10. aosp_cf_arm64_auto-userdebug
         11. aosp_cf_arm64_phone-userdebug
         12. aosp_cf_x86_64_foldable-userdebug
         13. aosp_cf_x86_64_pc-userdebug
         14. aosp_cf_x86_64_phone-userdebug
         15. aosp_cf_x86_64_tv-userdebug
         16. aosp_cf_x86_auto-userdebug
         17. aosp_cf_x86_phone-userdebug
         18. aosp_cf_x86_tv-userdebug
         19. aosp_coral-userdebug
         20. aosp_coral_car-userdebug
         21. aosp_flame-userdebug
         22. aosp_flame_car-userdebug
         23. aosp_oriole-userdebug
         24. aosp_oriole_car-userdebug
         25. aosp_raven-userdebug
         26. aosp_raven_car-userdebug
         27. aosp_redfin-userdebug
         28. aosp_redfin_car-userdebug
         29. aosp_redfin_vf-userdebug
         30. aosp_slider-userdebug
         31. aosp_sunfish-userdebug
         32. aosp_sunfish_car-userdebug
         33. aosp_trout_arm64-userdebug
         34. aosp_trout_x86-userdebug
         35. aosp_whitefin-userdebug
         36. aosp_x86-eng
         37. aosp_x86_64-eng
         38. arm_krait-eng
         39. arm_v7_v8-eng
         40. armv8-eng
         41. armv8_cortex_a55-eng
         42. armv8_kryo385-eng
         43. beagle_x15-userdebug
         44. beagle_x15_auto-userdebug
         45. car_ui_portrait-userdebug
         46. car_x86_64-userdebug
         47. db845c-userdebug
         48. gsi_car_arm64-userdebug
         49. gsi_car_x86_64-userdebug
         50. hikey-userdebug
         51. hikey64_only-userdebug
         52. hikey960-userdebug
         53. hikey960_tv-userdebug
         54. hikey_tv-userdebug
         55. poplar-eng
         56. poplar-user
         57. poplar-userdebug
         58. qemu_trusty_arm64-userdebug
         59. rb5-userdebug
         60. sdk_car_arm-userdebug
         61. sdk_car_arm64-userdebug
         62. sdk_car_portrait_x86_64-userdebug
         63. sdk_car_x86-userdebug
         64. sdk_car_x86_64-userdebug
         65. silvermont-eng
         66. uml-userdebug
         67. yukawa-userdebug
         68. yukawa_sei510-userdebug
    
    Which would you like? [aosp_arm-eng]
    Pick from common choices above (e.g. 13) or specify your own (e.g. aosp_barbet-eng):
    


    빌드하려는 구성을 선택하십시오.

    3단계: 구축



    간단히 m 명령을 실행하여 빌드할 수 있습니다.

    ❯ m
    


    그러면 우리가 지정한 대상에 대한 빌드가 시작됩니다. -j 인수를 사용하여 빌드의 스레드 수를 지정할 수도 있습니다.


    끝까지 읽어주셔서 감사합니다. 전체 시리즈의 첫 번째 부분일 뿐이며, 다음 부분에서는 Soong 빌드 시스템, 다양한 아키텍처용 빌드, 크로스 컴파일 등에 대해 살펴보겠습니다. 계속 지켜봐!

    또한 이 기사에 대한 피드백을 댓글로 알려주세요!

    좋은 웹페이지 즐겨찾기