android 소스 코드 컴파일 (aosp)

10055 단어

 
1단계: 공식 문서에 따라 원본 코드를 다운로드하고 환경을 설정하며 해당하는 명령을 실행한다.가장 좋은 것은 공식 하드웨어와 시스템에 따라build을 설정하는 것이다.
 
build의 버전은 6.0이고 원본 디렉터리는/home/koder/android-source-20151229
 
Requirements:
  • 다운로드한 원본은 매우 커서 30, 40G 정도 될 것으로 추정된다.build을 더하면 100+의 공간을 비우는 것이 가장 좋다.
  • 공식적으로 알려진 MAC OS나 Ubuntu LTS(14.04) X64로 자신은 Ubuntu LTS(14.04) 64위다.
  • 하드웨어 문제: 메모리 부족, 문말 문제 1.

  •  
     
     
    주의 문서가 있습니다: lunch aosparm-eng
    이것은build에서 emulator에 적응하는img을 만들고 debug를 허용하는 것입니다.
     
    aosp_arm-eng은 target 또는
    build configuration, 형식:
    BUILD-BUILDTYPE
     
    aosp_arm은 Build입니다.build가 다른 장치나 emulator의img를 원한다면 다른 값을 원합니다.여기를 클릭하면 소개가 있습니다.그중에 arm은 code name입니다.
     
    eng은 BUILDTYPE입니다.
    Buildtype
    Use
    user
    limited access; suited for production
    userdebug
    like "user"but with root access and debuggability; preferred for debugging
    eng
    development configuration with additional debugging tools
    출처:https://source.android.com/source/building.html
    target에는 다음과 같은 예가 있습니다.
    Device
    Code name
    Build configuration
    Nexus 6P
    angler
    aosp_angler-userdebug
    Nexus 5X
    bullhead
    aosp_bullhead-userdebug
    Nexus 6
    shamu
    aosp_shamu-userdebug
    Nexus Player
    fugu
    aosp_fugu-userdebug
    Nexus 9
    volantis (flounder)
    aosp_flounder-userdebug
    Nexus 5 (GSM/LTE)
    hammerhead
    aosp_hammerhead-userdebug
    Nexus 7 (Wi-Fi)
    razor (flo)
    aosp_flo-userdebug
    Nexus 7 (Mobile)
    razorg (deb)
    aosp_deb-userdebug
    Nexus 10
    mantaray (manta)
    full_manta-userdebug
    Nexus 4
    occam (mako)
    full_mako-userdebug
    Nexus 7 (Wi-Fi)
    nakasi (grouper)
    full_grouper-userdebug
    Nexus 7 (Mobile)
    nakasig (tilapia)
    full_tilapia-userdebug
    Galaxy Nexus (GSM/HSPA+)
    yakju (maguro)
    full_maguro-userdebug
    Galaxy Nexus (Verizon)
    mysid (toro)
    aosp_toro-userdebug
    Galaxy Nexus (Experimental)
    mysidspr (toroplus)
    aosp_toroplus-userdebug
    PandaBoard (Archived)
    panda
    aosp_panda-userdebug
    Motorola Xoom (U.S. Wi-Fi)
    wingray
    full_wingray-userdebug
    Nexus S
    soju (crespo)
    full_crespo-userdebug
    Nexus S 4G
    sojus (crespo4g)
    full_crespo4g-userdebug
    Do not use 4.1.1 on a Nexus 7 that was originally sold with 4.1.2 or newer.
     
    출처:https://source.android.com/source/running.html
    STEP 2:make 성공 후.
     
    디렉터리/home/koder/android-source-151229/out/target/product/generic에서 시스템 시스템의 파일을 생성합니다. 시스템을 포함합니다.img, ramdisk.img,userdata.img 등.
     
    그리고build은emulator의img이기 때문에 가상 컴퓨터를 실행합니다.
    공식 문서에 따르면 환경 변수를 자동으로 설정하지만 emulator를 실행할 때 이 명령이 없는 것을 발견하여 emulator의 디렉터리를 찾아야 한다고 한다.emulator는prebuilts/android-emulator에서 prebuilts 디렉터리는 정부에서 제공하는 것입니다. 원본 코드를 다운로드할 때 이미build가 좋은 도구와 라이브러리입니다.kernel을 포함해서도 이 아래에 있습니다. 따라서buildkernel을 원한다면 여기를 보십시오.문제가 발생했습니다. emulator로 돌아가서 emulator 디렉터리로 전환하고 다음을 실행합니다../emulator \ -sysdir ${ANDROID_PRODUCT_OUT} \ -system ${ANDROID_PRODUCT_OUT}/system.img \ -ramdisk ${ANDROID_PRODUCT_OUT}/ramdisk.img \ -data ${ANDROID_PRODUCT_OUT}/userdata.img \ -kernel /home/koder/android-source-20151229/prebuilts/qemu-kernel/arm/kernel-qemu-armv7 \ -skindir /home/koder/android-source-20151229/sdk/emulator/skins \ -memory 2048 \ -partition-size 2048 \ -skin WVGA800 \ -scale 0.7
     
    emulator 명령:http://developer.android.com/tools/help/emulator.html
    스스로 대응 목록을 고쳤으면 좋겠다.개인 환경 변수는 다음과 같습니다.
      JAVA_HOME=/home/koder/Documents/jdk1.8.0_65 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ANDROID_HOME=/home/koder/Documents/android-sdk-linux ANDROID_BUILD_OUT_HOST=/home/koder/android-source-20151229/out/host/linux-x86/bin ANDROID_PRODUCT_OUT=/home/koder/android-source-20151229/out/target/product/generic PATH=$ANDROID_HOME:$ANDROID_BUILD_OUT_HOST:$PATH export JAVA_HOME PATH CLASSPATH ANDROID_PRODUCT_OUT
     
    여기까지만 하면 돼.
     
     
    BUILD 프로세스의 문제점:
     
    1. 힌트: increasing heap size.Java 가상 머신에 대한 heap size가 부족하여 환경 변수를 추가합니다.export _JAVA_OPTIONS=-Xmx8192m
    대소를 매기는 것은 자기 기계를 보는 것이다.
    그러나 이렇게 설정해도 때때로 효과가 없다. 왜냐하면 기계 자체의 하드웨어 메모리가 부족할 수도 있고 8G만큼 좋지 않기 때문이다.자신의 기계가 8G이고 가상 기기에서 실행되며 4G의 공간만 분배되기 때문에build의 과정에서 메모리 부족 문제가 오랫동안 끊겼고 공식적으로는 16g 램 이상이 있으면 거의 포기할 것 같다고 말했다.마지막으로 swap 메모리를 늘리는 방법을 생각해 봤어요.
    swap 메모리를 어떻게 늘리는지는 여기를 참고하십시오.
     
    직접 스웩이 16G 늘었는데 8G였으니 24G가 좋다.
    UNIX의 "Everything is file"의 위대함에 감탄, 하드웨어 부족, 소프트웨어 보완, ㅋㅋ~~
    이 메모리 문제를 해결한 후 순조롭게build이 나왔습니다.
     
     
    또한:
    1.cccache:watch-n1 -d prebuilts/misc/linux-x86/ccache/ccache -s 보기

    좋은 웹페이지 즐겨찾기