Android mm Build

Android mm Build

  • 아래는 안로드이드 풀 소스코드가 받아진 상황에서, 풀 빌드를 수행하고, 내가 원하는 package 에 대해서 부분 빌드를 하고 싶을 때 사용하는 방법이다.
  • 안드로이드 공식빌드

개요

 안드로이드의 "mm 빌드"는 안드로이드 소스 코드를 빌드하는 방법 중 하나로서, 소스 코드의 일부를 수정하고 해당 변경 사항만을 빌드하는 방법을 의미합니다. 이렇게 하면 전체 안드로이드 시스템을 다시 빌드하는 것보다 시간을 절약할 수 있습니다.

서버 풀 빌드

  • 우선 부분 빌드 (mm 빌드) 를 수행하고자 하는 서버가 풀 빌드가 되어있어야 한다.
  • 전체 빌드가 성공적으로 된 이후 수행 할 수 있다.

빌드 환경 설정

$ cd /DATA/workspace/PROJECT_NAME/LINUX/android
$ source build/envsetup.sh
$ lunch aosp_arm-eng
 위와 같이 envsetup.sh 스크립트로 환경을 초기화합니다.
 
 lunch를 사용하여 빌드할 타겟을 선택합니다. lunch product_name-build_variant는 빌드할 제품으로 product_name을 선택하고 빌드할 변형으로 build_variant를 선택하며, 이러한 선택항목을 이후의 m 및 기타 유사한 명령어 호출에서 읽을 수 있도록 환경에 저장합니다.

 원하는 형태에 맞게 lunch 옵션에서 선택하여 지정할 수 있습니다.

mm 빌드 실행

user:/DATA/source/PRODUCT/LINUX/android$ source build/envsetup.sh
user:/DATA/source/PRODUCT/LINUX/android$ lunch aosp_arm-eng
user:/DATA/source/PRODUCT/LINUX/android$ cd vendor/XXXX/packages/apps/PACKAGE_NAME
user:/DATA/source/PRODUCT/LINUX/android/vendor/XXXX/packages/apps/PACKAGE_NAME$ mm

Android.bp 파일이 있는 폴더로 이동하여, 해당 경로에서 "mm" 을 입력한다.
out/target/product/AOSP/system/priv-app/PACKAGE_NAME/PACKAGE_NAME.apk 경로에 APK 파일이 생성된다.

mm 빌드 후 Priv-App 삭제 후 재설치 하기

$ adb root
$ adb disable-verity
$ adb reboot # Reconnect ADB mode after reboot
$ adb root
$ adb remount
$ rm -rf /system/priv-app/PACKAGE_NAME/APK_FILE.apk
$ pm clear com.XXXX.PACKAGE_NAME
$ exit
$ adb install APK_FILE.apk

코드 빌드 옵션

  • m : 현재 경로를 기준으로 소스 트리의 최상위 경로로 이동한 후 make를 실행해준다. 트리 맨 위에서 빌드를 실행합니다. 이 기능은 하위 디렉터리에서 make을 실행할 수 있기 때문에 유용합니다. TOP 환경 변수 집합이 있으면 이 변수를 사용합니다. 그렇지 않으면 트리의 맨 위를 찾으려고 현재 디렉터리에서 트리를 조회합니다. 인수 없이 m를 실행하여 소스 코드 트리 전체를 빌드하거나 이름을 지정하여 특정 타겟을 빌드할 수 있습니다.
  • mm : 현재 경로를 기준으로 가장 가까운 단위 모듈을 찾아서 그 모듈만 build 해준다.
  • mmm : 파라미터로 주어진 경로들에 대해 단위 모듈 build를 해준다. 
  • m clean : 이 구성의 모든 출력 파일과 중간 파일을 삭제합니다. 이는 rm -rf out/과 동일한 기능을 합니다.

mm 옵션이 현재 경로를 기준으로 단위 모듈에 대해서 빌드해주는것이므로 해당 경로에서 mm 빌드로 하는것이 가장 용이 하다.

댓글

이 블로그의 인기 게시물

Intel® HAXM installation failed 해결하기

Kotlin Interface

Kotlin this, super