Step 1: According to the official documents, download the source code, configure the environment, and execute the corresponding commands. It is best to follow the official hardware and system configuration build.
build version is 6.0, source directory is /home/koder/android-source-20151229 Requirements:
- The source of the download is very large, estimated to have 30,40g around. Plus build, it's best to free up 100+ space.
- According to the official Mac OS or Ubuntu Lts (14.04) X64, it is Ubuntu Lts (14.04) 64 bits.
- Hardware problem: Insufficient memory, see the end of the article 1.
There is a note that the document says: Lunch Aosp_arm-eng this is to build an IMG that adapts to the emulator and allows debug. Aosp_arm-eng means
target Or
build Configuration, the format is:
Build-buildtypeAosp_arm is build. If you want to build different devices or emulator IMG, you will have different values. Click here for an introduction. Where arm is called code name ENG is 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
Source: https://source.android.com/source/building.html |
Some examples of target are these:
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 |
Don't use the 4.1.1 on a Nexus 7 that is originally sold with 4.1.2 or newer.
Source: https://source.android.com/source/running.html
Step 2: After successful make success.
The system system files are generated under directory/home/koder/android-source-20151229/out/target/product/generic, including System.img, Ramdisk.img,userdata.img and so on. It then runs, because the build is emulator img, so it runs the virtual machine. The official document says that the environment variable will be set automatically, but when the emulator is executed, there is no command, so you need to find the emulator directory yourself. Emulator inPrebuilts/android-emulator, Prebuilts directory is officially provided, download the source code has been build good tools and libraries, including kernel is also under this, so if you want to build kernel, look here. Off-topic, go back to emulator, switch to emulator directory, run:
./emulator \
-sysdir ${ANDROID_PRODUCT_OUT} \
-system ${ANDROID_PRODUCT_OUT}/system.img \
-ramdisk ${ANDROID_PRODUCT_OUT}/ramdisk.img \
-data ${android_product_out}/userdata. IMG \
-kernel /< Span class= "PLN" >home/koder/android< Span class= "pun" >-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 command: http://developer.android.com/tools/help/emulator.html to change the corresponding directory on their own good. The personal environment variables are:
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< Span class= "pun" >/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
It's OK to be here.
problems encountered during the build process:1. Tip: Increasing heap size. Is that the heap size of the Java virtual machine is not enough, add the environment variable:
export _JAVA_OPTIONS=-Xmx8192m
the size of the assignment looks at your own machine. However, even if this is set up, sometimes it does not work, because the machine itself may be insufficient hardware memory, there is no 8G so much good. Because of their own machine is 8G, and run on the virtual machine, only allocated to 4G of space, so the process of build, memory problems stuck themselves for a long time, and the official said, it is best to have 16g ram above, almost give up. Finally think of a way to increase swap memory. As for how to increase swap memory, refer to here. their direct swap increased by 16G, because it was 8G, so it is best to 24G. sigh, Unix "Everything is file" of the great, hardware is not enough, software to fill, hehe ~ ~ ~ Solve this memory problem, on the smooth build out.
Other than that:
1. View Cccache:watch-n1-d prebuilts/misc/linux-x86/ccache/ccache-s
Compiling Android source code (AOSP)