안 드 로 이 드 소스 작업 환경 실 용적 인 기술

7069 단어 android기교.
Android 소스 트 리 에 환경 설정 스 크 립 트 파일 을 제공 합 니 다. 이 환경 설정 을 가 져 오 면 매우 실 용적 인 명령 을 받 을 수 있 습 니 다.
환경 설정 가 져 오기
환경 설정 을 가 져 오 는 방법 은 원본 트 리 의 루트 에서 다음 명령 을 실행 하 는 것 입 니 다.
$ source build/envsetup.sh

혹은
$ . build/envsetup.sh

이후 실행 hmm 명령 은 도움말 정 보 를 얻 고 사용 가능 한 매크로 와 함 수 를 표시 합 니 다. 이 매크로 와 함 수 는 셸 의 명령 으로 사용 할 수 있 습 니 다.
$ hmm
Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment:
- lunch:   lunch <product_name>-<build_variant>
- tapas:   tapas [<App1> <App2> ...] [arm|x86|mips|armv5] [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.
- 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.
- cgrep:   Greps on all local C/C++ files.
- jgrep:   Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir:   Go to the directory containing a file.

Look at the source to view more functions. The complete list is:
addcompletions add_lunch_combo cgrep check_product check_variant choosecombo chooseproduct choosetype 
choosevariant cproj croot findmakefile gdbclient gdbwrapper get_abs_build_var getbugreports get_build_var 
getlastscreenshot getprebuilt getscreenshotpath getsdcardpath gettargetarch gettop godir hmm isviewserverstarted 
jgrep key_back key_home key_menu lunch _lunch m mangrep mm mma mmm mmma pez pid printconfig print_lunch_menu qpid 
resgrep runhat runtest sepgrep set_java_home setpaths set_sequence_number set_stuff_for_environment settitle 
smoketest stacks startviewserver stopviewserver systemstack tapas tracedmdump

기본 구축 설정
기본 적 인 구축 파 라 메 터 를 설정 하고 choosecombo 또는 lunch 명령 을 사용 합 니 다.이 기본 설정 항목 들 은:
  • the product ('generic' or some specific board or platform name)
  • the build variant ('user', 'userdebug', or 'eng')
  • whether you're running on a simulator ('true' or 'false')
  • the build type ('release' or 'debug')

  • 예 를 들 면:
    $ choosecombo
    Build for the simulator or the device?
         1. Device
         2. Simulator
    
    Which would you like? [1]
    
    
    Build type choices are:
         1. release
         2. debug
    
    Which would you like? [1] 2
    
    
    Which product would you like? [generic]
    
    
    Variant choices are:
         1. user
         2. userdebug
         3. eng
    Which would you like? [eng]
    
    ============================================
    PLATFORM_VERSION_CODENAME=REL
    PLATFORM_VERSION=1.6
    TARGET_PRODUCT=generic
    TARGET_BUILD_VARIANT=eng
    TARGET_SIMULATOR=false
    TARGET_BUILD_TYPE=debug
    TARGET_ARCH=arm
    HOST_ARCH=x86
    HOST_OS=linux
    HOST_BUILD_TYPE=release
    BUILD_ID=Donut
    ============================================
    

    또는 미리 설정 한 설정 을 직접 선택 하 십시오:
    $ lunch generic-eng
    ============================================
    PLATFORM_VERSION_CODENAME=REL
    PLATFORM_VERSION=1.6
    TARGET_PRODUCT=generic
    TARGET_BUILD_VARIANT=eng
    TARGET_SIMULATOR=false
    TARGET_BUILD_TYPE=debug
    TARGET_ARCH=arm
    HOST_ARCH=x86
    HOST_OS=linux
    HOST_BUILD_TYPE=release
    BUILD_ID=Donut
    ============================================
    

    주: 괄호 ([]) 는 현재 옵션 의 기본 값 입 니 다. 입력 하지 않 고 Enter 를 누 르 면 기본 값 을 사용 합 니 다.
    가속 컴 파일
    컴 파일 캐 시 사용 하기
    ccache 사용 하기
    $ export USE_CCACHE=1
    

    또는 위 명령 을 .bashrc 파일 에 직접 기록 합 니 다.
    $ echo export USE_CCACHE=1 >> ~/.bashrc
    $ source ~/.bashrc
    

    병렬 컴 파일
    호스트 CPU 를 다 핵 으로 컴 파일 하면 여러 개의 CPU 핵 을 동시에 컴 파일 에 참여 시 킬 수 있 습 니 다.예 를 들 어 8 핵 CPU:
    $ make -j8
    

    다음 명령 은 CPU 의 핵심 수 를 표시 합 니 다:
    $ sed -n "/processor/p" /proc/cpuinfo | wc -l
    

    스 크 립 트 에서 사용 하면 다음 과 같이 쓰 는 것 이 편리 합 니 다.
    make -j`sed -n "/processor/p" /proc/cpuinfo | wc -l`
    

    특정 목표 컴 파일
    다음 에 지정 한 대상 의 컴 파일 명령 은 특정한 코드 를 컴 파일 하 는 데 사용 할 수 있 습 니 다.
  • make sdk - build the tools that are part of an SDK (adb, fastboot, etc.)
  • make snod - build the system image from the current software binaries
  • make services
  • make runtime
  • make droid - make droid is the normal build.
  • make all - make everything, whether it is included in the product definition or not
  • make clean - remove all built files (prepare for a new build). Same as rm -rf out _
  • make modules - shows a list of submodules that can be built (List of all LOCAL_MODULE definitions)
  • make _ - make a specific module (note that this is not the same as directory name. It is the LOCAL_MODULE definition in the Android.mk file)
  • make clean-_ - clean a specific module
  • make bootimage - build kernel and create a new boot image
  • make bootimage TARGET_PREBUILT_KERNEL=/path/to/bzImage - create a new boot image with custom bzImage

  • 실 용적 인 명령 들
    가 져 올 때 build/envsetup.sh 유용 한 셸 매크로 와 함수 가 도입 되 었 습 니 다. 우 리 는 그것들 을 일반적인 명령 으로 사용 할 수 있 고 매우 편리 합 니 다.실행 hmm 명령 을 실행 하면 이 명령 정 보 를 볼 수 있 습 니 다. 다음은 일부 자주 사용 하 는 명령 입 니 다.
  • croot - change directory to the top of the tree
  • godir _ - go to the directory containing a file
  • m - execute 'make' from the top of the tree (even if your current directory is somewhere else)
  • mm - builds all of the modules in the current directory
  • mmm _ … - build all of the modules in the supplied directories
  • cgrep _ - grep on all local C/C++ files
  • jgrep _ - grep on all local Java files
  • resgrep _ - grep on all local res/*.xml files

  • croot
    예 를 들 어 소스 코드 의 루트 디 렉 터 리 는 ~/mydroid 입 니 다. 현재 ~/mydroid/frameworks/base/core/java/android/os 경로 에서 소스 코드 루트 디 렉 터 리 로 돌아 가 려 면 많은 cd ../.. 명령 을 입력 하지 않 아 도 됩 니 다. croot 명령 이 필요 하 다 는 뜻 입 니 다.
    ~/mydroid/frameworks/base/core/java/android/os $ croot
    ~/mydroid $
    

    godir
    이 명령 은 기본적으로 croot 의 반작용 입 니 다. 현재 경로 에서 특정한 파일 이 있 는 디 렉 터 리 로 직접 이동 합 니 다. 같은 이름 의 파일 이 여러 개 있 으 면 목록 을 추가 로 선택 합 니 다.
    ~/mydroid/packages/apps/Music $ godir SystemClock.java
    ~/mydroid/frameworks/base/core/java/android/os $
    

    m
    현재 하위 디 렉 터 리 에 있 든 원본 디 렉 터 리 에서 make 명령 을 실행 하려 면 원본 디 렉 터 리 로 돌아 가서 실행 할 필요 가 없습니다 make. 현재 디 렉 터 리 에서 하나의 m 명령 만 실행 하면 됩 니 다.
    mm
    어떤 하위 모듈 디 렉 터 리 에서 이 하위 모듈 을 컴 파일 합 니 다.예 를 들 어 컴 파일 Music
    ~/mydroid/packages/apps/Music $ mm
    

    mmm
    원본 루트 디 렉 터 리 에서 지정 한 하위 모듈 을 컴 파일 합 니 다.예 를 들 어 컴 파일 Music
    ~/mydroid $ mm packages/apps/Music
    

    좋은 웹페이지 즐겨찾기