Project ES/: : AAOS

AOSP 빌드 불필요 파일 정리 옵션

Jay.P Morgan 2026. 2. 5. 09:19

 

  1.AOSP Build시 불필요한 파일 정리 옵션

 

  1.1  가장 추천하는 방법: installclean

 

AOSP (Android Open Source Project) Android Automotive를 빌드할 때, 이전 빌드의 잔여물이나 불필요한 파일(Stale files)을 정리하고 깨끗한 상태에서 다시 이미지를 생성하고 싶다면 가장 적합한 옵션(타겟)은 [installclean]입니다.

상황에 따라 사용할 수 있는 옵션들을 정리해 드립니다.

 

빌드 시간을 절약하면서도 생성된 이미지(system, vendor 등)를 삭제하여 깨끗하게 다시 패키징하고 싶을 때 사용합니다.

  • 명령어:
 
  m installclean && m
 
  • 동작 방식:
    • out/target/product/<device_name>/ 디렉토리 내의 설치된 파일들(system, data, root 등 최종 이미지 관련 폴더)을 삭제합니다.
    • 중요: 컴파일된 중간 객체 파일(.o 파일 등 obj 디렉토리 내용)은 지우지 않습니다.
    • 장점: 소스 코드 수정 후 다시 빌드할 때, 전체 재빌드(clean)보다 훨씬 빠르면서도 이전 이미지의 잔여 파일로 인한 충돌을 방지할 수 있습니다.

 

 

  1.2  전체 초기화: clean (또는 clobber)

 

빌드 과정에서 생성된 모든 파일을 완전히 삭제하고 처음부터 다시 시작하고 싶을 때 사용합니다. "쓸모없는 파일"이 디스크 용량을 차지하는 중간 파일들까지 포함한다면 이 옵션을 사용해야 합니다.

  • 명령어:
 
  m clean
  # 또는
  m clobber
 
  • 동작 방식:
    • out/ 디렉토리 전체를 삭제합니다.
  • 단점: 모든 모듈을 다시 컴파일해야 하므로 빌드 시간이 매우 오래 걸립니다. (보통 Clean Build라고 부릅니다.)

 

 

  1.3  데이터 파티션만 정리: dataclean

 

User data 파티션과 관련된 파일만 지우고 싶을 때 유용합니다.

  • 명령어:
 
  m dataclean
 
  • 용도: 공장 초기화 상태의 데이터 이미지를 다시 만들고 싶을 때 주로 사용합니다.

 

 

요약 비교

명령어 삭제 대상 컴파일 객체(Obj) 유지? 빌드 속도 권장 상황
installclean 생성된 이미지 파일 (system, vendor 등) Yes (유지) 빠름 브랜치 변경, 제품 설정 변경 후 재빌드 시
clean out/ 폴더 전체 (모든 빌드 산출물) No (삭제) 느림 꼬인 의존성 해결, 디스크 공간 확보 시
dataclean /data 파티션 관련 파일 Yes (유지) 매우 빠름 데이터 파티션 초기화 필요 시
 

팁: 디스크 공간이 부족해서 "쓸모없는 파일"을 지우려는 경우

만약 빌드 중에 디스크 용량이 부족해서 질문하신 것이라면, 다음 방법을 고려해보세요.

  1. 빌드 후 out 디렉토리 압축: 배포용 이미지만 챙기고 빌드 폴더를 날립니다.
  2. OUT_DIR_COMMON_BASE 설정: 빌드 아티팩트(out 폴더)를 소스 코드와 다른(용량이 큰) 디스크 경로로 지정하여 빌드할 수 있습니다.
 
  export OUT_DIR_COMMON_BASE=/path/to/large/disk/out
 

 

 

 

  2. 빌드하면서 중간 생성파일들을 지우면서 빌드하는 방법은?

 

안타깝게도 AOSP 빌드 시스템(Soong/Ninja)에는 "빌드 중에 중간 파일(.o, .a 등)을 즉시 삭제하며 빌드하는"단일 옵션이나 플래그는 존재하지 않습니다.

그 이유는 빌드 시스템이 의존성(Dependency) 그래프를 기반으로 작동하기 때문입니다. 최종 이미지를 링크(Link)할 때까지 중간 객체 파일들이 필요하며, 빌드 완료 후에도 다음 번 증분 빌드(Incremental build)를 위해 이 파일들을 남겨두도록 설계되어 있습니다.

하지만 디스크 용량을 획기적으로 줄이면서 빌드할 수 있는 현실적인 방법 3가지를 제안해 드립니다.

 

 

  방법 1. Dexpreopt 끄기 (가장 효과적, 용량 대폭 절약)

 

Android 빌드 용량의 상당 부분은 앱을 최적화(ODEX)하는 과정에서 생성되는 파일들이 차지합니다. 이 옵션을 끄면 빌드 속도가 빨라지고, out/ 폴더 용량이 수십 GB 이상 줄어듭니다.

  • 설정 방법: 빌드 명령어 앞에 환경변수를 추가합니다.
 
  export WITH_DEXPREOPT=false
  m
 
  • 단점: 생성된 이미지로 부팅할 때 첫 부팅 속도가 느려질 수 있습니다 (부팅 시점에 앱을 최적화하므로). 하지만 개발/디버깅용으로는 문제없습니다.

 

 

  방법 2. 심볼(Symbol) 제거 및 빌드 타입 변경

 

디버깅 정보가 포함된 파일들은 용량이 매우 큽니다. 꼭 디버깅(adb root, strace 등)이 필요한 상황이 아니라면 빌드 타입을 변경하거나 심볼을 제거하세요.

 

    1. user 빌드 사용: userdebug나 eng 빌드는 디버깅 심볼과 툴을 많이 포함하여 용량이 큽니다. 배포 목적이라면 user로 빌드하세요.

 
  lunch <target>_user
  m
 

 

  2. 디버깅 심볼 스트립 (Strip): 강제로 심볼을 최소화하는 옵션입니다.

 
  export TARGET_BUILD_VARIANT=user
  export STRIP_UNNEEDED=true
  m
 

 

 

  방법 3. 전체 빌드(m) 대신 필요한 이미지만 빌드

 

m 명령어를 치면 전체 시스템을 빌드할 뿐만 아니라 호스트 툴, 테스트 케이스, SDK 등 불필요한 것들도 같이 빌드될 수 있습니다. 필요한 파티션 이미지만 콕 집어서 빌드하세요.

  • 예시:(Automotive의 경우 superimage를 만들어야 할 수도 있습니다.)
 
  # 전체를 다 만들지 말고 필요한 것만 나열
  m systemimage vendorimage bootimage

 

 

(참고) 물리적 공간 해결법: .repo 폴더 다이어트

만약 **"한 번만 빌드해서 이미지만 뽑으면 되고, 소스 코드 업데이트(git pull)는 당분간 필요 없다"**면, 소스 코드 용량의 절반 이상을 차지하는 .repo 폴더(Git 히스토리)를 삭제하거나 정리할 수 있습니다.

주의: 이 방법을 쓰면 repo sync가 불가능해지거나 다시 처음부터 받아야 할 수 있습니다.

  • 방법: 빌드 시작 전에 .repo 폴더를 다른 디스크로 옮기거나(백업), 정말 급하면 삭제합니다. (비추천하지만 최후의 수단입니다.)

추천하는 시나리오

현재 용량 부족으로 빌드가 멈춘다면, 다음 순서로 시도해보세요.

  1. m installclean (이전 빌드 찌꺼기 정리)
  2. export WITH_DEXPREOPT=false (최적화 파일 생성 안 함)
  3. m systemimage vendorimage ... (필요한 타겟만 빌드)

혹시 현재 out/ 폴더가 위치한 파티션의 남은 용량이 대략 어느 정도인가요? (예: 50GB 미만 등) 용량에 따라 성공 여부가 갈릴 수 있습니다.

 

 

 

 

 

 

 

'Project ES > : : AAOS' 카테고리의 다른 글

VPU_Wrapper  (0) 2026.02.20
.bp (BluePrint)  (0) 2026.02.20
[AAOS Audio] 오디오 포커스  (0) 2026.02.09
[AAOS Audio] Intro  (0) 2026.02.09
Android Automotive OS Architecture: Definitive Guide  (0) 2026.02.04