Android Platform 부분 빌드 방법

  1. 안드로이드 빌드의 시작은 source build/envsetup.sh의 명령어로 안드로이드 환경을 구성하는 것이다.
    현재 rk3328의 환경설정을 보면
    FFTools\build.sh에 다음과 같이 되어있다.
1
2
3
4
5
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

source build/envsetup.sh
  1. 다음은 lunch명령어를 통해 타겟별 환경을 구성하는 것이다.

현재 FFTools\make.sh를 살펴보면 다음과 같이 구성하고 있다.

lunch roc_rk3328_cc_box-userdebug

  • 여기서 roc_rk3328_cc_box는 디바이스 타겟 명칭을 가리킨다.

->device\rockchip\rk3328\roc_rk3328_cc_box

  • -userdebug는 컴파일 수준을 나타낸다.
    Android.mk의 makefile을 보면 다음과 같은 항목이 있다.

LOCAL_MODULE_TAGS := xxx

xxx가 컴파일 수준을 나타낸다.

user < userdebug < eng

오른쪽으로 갈수록 수준이 높아지며 eng는 user / userdebug 모두를 포함한다.
userdebug는 user를 포함하며 user는 오직 user가 명칭되어 있을때만 컴파일 된다.

optional은 deviceconfig에 해달 모듈이 명명되어 있을때 컴파일 된다.

  • 부분 빌드시에는 LOCAL_MODULE_TAGS 수준에 상관없이 무조건 컴파일 된다.
  1. source build/envsetup.sh를 실행하면 안드로이드 환경의 명령어를 사용할 수 있다.
    hmm을 사용하면 아래와 같이 뜬다.
  • lunch: lunch -
  • tapas: tapas [ …] [arm|x86|mips|armv5|arm64|x86_64|mips64] [eng|userdebug|user]
  • croot: Changes directory to the top of the tree.
  • m: Makes from the top of the tree.
  • mm: Builds all of the modules in the current directory, but not their dependencies.
  • mmm: Builds all of the modules in the supplied directories, but not their dependencies.
    To limit the modules being built use the syntax: mmm dir/:target1,target2.
  • mma: Builds all of the modules in the current directory, and their dependencies.
  • mmma: Builds all of the modules in the supplied directories, and their dependencies.
  • provision: Flash device with all required partitions. Options will be passed on to fastboot.
  • cgrep: Greps on all local C/C++ files.
  • ggrep: Greps on all local Gradle files.
  • jgrep: Greps on all local Java files.
  • resgrep: Greps on all local res/*.xml files.
  • mangrep: Greps on all local AndroidManifest.xml files.
  • mgrep: Greps on all local Makefiles files.
  • sepgrep: Greps on all local sepolicy files.
  • sgrep: Greps on all local source files.
  • godir: Go to the directory containing a file.

여기서 눈여겨 볼 명령어는

  • m : 전체 빌드
  • mm : 현재 디렉토리 부분빌드
  • mma : 현재디렉토리 부분빌드. 연관성 있는것 까지 다 빌드함.
  • croot: 안드로이드 최상위 디렉토리로 감

mm 명령어를 사용해서 부분 빌드가 가능하다.

빌드를 끝나면 어떤 파일이 어디에 생성했는지 표시해 준다.

예>

1
Install: out/target/product/roc_rk3328_cc_box/data/app/TouchLatencyJankTestWear/TouchLatencyJankTestWear.apk

out/target/product/roc_rk3328_cc_box/까지는 공통이다.
그후의 폴더는 안드로이드 시스템의 폴더와 연동된다.

예를들어 out/target/product/roc_rk3328_cc_box/data/app폴더면 안드로이드의 data/app폴더와 연동된다.
out/target/product/roc_rk3328_cc_box/system/xxx폴더는 안드로이드의 system/xxx 폴더와 연동된다.

위와 같은 경로를 알면 adb push를 사용해 바로 안드로이드에 적용 가능하다.

1
2
3
4
adb remount

adb push out/target/product/roc_rk3328_cc_box/data/app/TouchLatencyJankTestWear/TouchLatencyJankTestWear.apk
data/app/TouchLatencyJankTestWear

와 같은 명령어로 해당 파일을 적용 가능하다.

공유하기