This tutorial is based on Ubuntu under the Android6.0.1 source and the kernel download and compile, record, and then do not have to find their own data, over and over again to try. Can turn over the wall, English is good, go straight to Androidsource.
System Environment: Ubuntu14.04lts
Android version: 6.0.1
Important Web site
Tsinghua University Mirror Image
Androidsource
Pre-Download preparation
Install OpenJDK
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo Update-alternatives--config java
java-version
Install Git
sudo apt-get install Git-core
Install an additional build
sudo apt-get install GnuPG flex Bison gperf build-essential \ Zip Curl zlib1g-dev gcc-multilib g++-multilib
i386 \
Lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \
Libgl1-mesa-dev libxml2-utils Xsltproc Unzip
Build |
function |
Introduction Web Site |
GnuPG |
Encryption tool |
GPG Introductory Tutorials |
Flex |
The Fast lexical Analyzer |
Quick Syntax Analysis tools |
Bison |
For automatic generation of parser programs |
Automatic generation of parser programs |
Gperf |
The perfect hash function generator |
Use Gperf to implement efficient C + + command line processing |
Build-essential |
Compilation of make Menuconfig into graphics in the kernel |
Build-essential |
Zip |
Compression and decompression of Zip package under Linux |
Compression and decompression of Zip package under Linux |
Curl |
Network request and extraction tools |
Curl Website Development Guide |
Zlib1g-dev |
Tools for discovering Gzip and PKZIP |
Binary package "Zlib1g-dev" in Ubuntu trusty |
Gcc-multilib |
Allows 32-bit applications to be run in 64-bit machines |
Multilib |
G++-multilib |
Ibid. (g++ Compilation tool) |
Multi-platform Support |
Libc6-dev-i386 |
Embedded GNU C library:32-bit development libraries for AMD64 |
Libc6-dev-i386 |
Lib32ncurses5-dev |
To be perfected |
To be perfected |
X11proto-core-dev |
To be perfected |
To be perfected |
Libx11-dev |
To be perfected |
To be perfected |
Lib32z-dev |
To be perfected |
To be perfected |
CCache |
To be perfected |
To be perfected |
Libgl1-mesa-dev |
To be perfected |
To be perfected |
Libxml2-utils |
To be perfected |
To be perfected |
Xsltproc |
To be perfected |
To be perfected |
Unzip |
To be perfected |
To be perfected |
Download
Because of the network and the reasons for the wall, we use Tsinghua University mirroring, the following steps:
Download the Repo tool
mkdir ~/bin
path=~/bin: $PATH
Curl Https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
Download source
wget Https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # Download Initialization package
Tar XF Aosp-latest.tar
CD AOSP # extract AOSP Engineering directory
# at this time LS words can see nothing, because there is only one hidden. Repo Directory
Repo Sync # Normal sync to get the full catalog
# or repo sync-l only checkout code
PS: Total 25G, slow down!
Compile
Enter the AOSP root directory
Initializing the compilation environment
. build/envsetup.sh
Select compilation target, select 1, all options mean, back to update
Lunch
Start compilation, where 4 concurrent numbers are used:
Make-j4
Using the packaging tool mmm, after completing the command, you will generate ANDROID.IRP in the root directory, open an existing project with Android Studio, and open Android.irp
Mmm development/tools/idegen/
Running the current version of the emulator
Add the emulator source directory to the path
Export Path=&path:~/bin/aosp/out/host/linux-x86/bin
Set source code compile output directory
Export Android_product_out=~/bin/aosp/out/target/product/generic
Run emulator
Emulator
Download the Android kernel source code
Go to the kernel directory and download the kernel
git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/goldfish.git
Enter Goldfish directory, select Branch
CD Goldfish
Git branch-a
git checkout remotes/origin/android-goldfish-2.6.29
Compiling the Android kernel source code
To add the cross-compilation tool directory to the PATH environment variable
Export path= $PATH: ~/bin/aosp/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin
Open Goldfish Makefile Modify the configuration file, locate the Arch,cross_compile, and modify it as follows
ARCH =arm.
Cross_compile? =/home/user/bin/aosp/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/
arm-linux-androidkernel-
Note: Be sure to set the absolute path.
Build configuration file and compile
Make Goldfish_defconfig
Make
Run the current kernel version of the emulator
Running the current emulator
Emulator-kernel./kernel/goldfish/arch/arm/boot/zimage
View Kernel version
ADB shell
CD proc
Cat version
Bugs
JDK Memory Overflow
FAILED:/bin/bash OUT/TARGET/COMMON/OBJ/JAVA_LIBRARIES/FRAMEWORK_INTERMEDIATES/DEX-DIR/CLASSES.DEX.RSP
Out of Memory error (version 1.2-RC4 ' Carnac ') (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.com)).
GC overhead limit exceeded.
Try increasing heap size with Java option '-xmx<size> '.
Warning:this may have produced partial or corrupted output.
Ninja:build Stopped:subcommand failed.
Make: * * * * [Ninja_wrapper] Error 1
A:
Export jack_server_vm_arguments= "-dfile.encoding=utf-8-xx:+tieredcompilation-xmx4g"
./prebuilts/sdk/tools/jack-admin Kill-server
./prebuilts/sdk/tools/jack-admin Start-server
The above is on the Android source download, and compile, follow-up continue to update the relevant articles, thank you for your support of this site!