android 소스 코드 컴파일 (aosp)
1단계: 공식 문서에 따라 원본 코드를 다운로드하고 환경을 설정하며 해당하는 명령을 실행한다.가장 좋은 것은 공식 하드웨어와 시스템에 따라build을 설정하는 것이다.
build의 버전은 6.0이고 원본 디렉터리는/home/koder/android-source-20151229
Requirements:
주의 문서가 있습니다: 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 보기
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.