编译参考教程:https://blog.csdn.net/arinasiyyj/article/details/125998689
初始化
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-9.0.0_r8
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r8
有些仓库无法更新代码:参考:https://blog.csdn.net/yyzsyx/article/details/128509130
szhou@bc04:~/aosp/aosp$ rm -rf packages/apps/Settings
szhou@bc04:~/aosp/aosp$ rm -rf .repo/projects/packages/apps/Settings.git/
szhou@bc04:~/aosp/aosp$ repo sync
强制更新某个仓库:参考:https://www.cnblogs.com/beansoft/p/15383080.html
repo sync hardware/libhardware --force-sync
repo源:https://blog.csdn.net/mrliuzhao/article/details/115752440
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-9.0.0_r8
安装依赖库:
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache
sudo apt-get install libssl-dev
sudo apt-get install liblz4*
sudo apt-get install libtinfo5
sudo apt-get install libncurses5
sudo ldconfig
执行:
执行编译之前去顶jdk版本,Android 9需要jdk8!!!!!!
source build/envsetup.sh
编译参数
比如:lunch sdk_phone_x86_64,目的是选择编译的平台。
其实就是:/build/make/target/product目录下配置文件

开始编译
make -j4
如果编译中出现失败
make clean
source build/envsetup.sh
launch (选择平台)
make -j4
编译成功后

android源码编译后在 out/target/product/generic 下生成
system.img, ramdisk.img,userdata.img 镜像文件。
ramdisk.img 是emulator的文件系统
system.img 包括了主要的包, 库等文件
userdata.img 包括了一些用户数据
Linux 内核: prebuilts/qemu-kernel 下面有编译好的内核镜像, 我编译的 target 是 aosp_arm_eng, 不带任何参数启动模拟器使用的内核镜像就是 prebuilts/qemu-kernel/arm/kernel-qemu
作者:lesliefang
链接:https://www.jianshu.com/p/0792aef20448
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
启动模拟器报错:
如果在执行命令(emulator)的时候报错了,使用Android studio 创建一个模拟器即可。
emulator: ERROR: No AVD specified. Use '@foo' or '-avd foo' to launch a virtual device named 'foo'
这个错误提示说明你在启动模拟器时没有指定要使用的 AVD(Android Virtual Device)名称。
要启动模拟器,你需要指定一个已经创建的 AVD 的名称。可以通过以下命令启动模拟器:
emulator -avd <AVD_NAME>
其中 <AVD_NAME> 是你创建的 AVD 的名称。确保 AVD 的名称正确且存在。如果你没有创建 AVD,请先使用 Android SDK Manager 创建一个 AVD,然后再启动模拟器。
如果你已经创建了 AVD,但是仍然出现该错误,请检查 AVD 的名称是否拼写正确,并且确保 AVD 的配置文件存在。
另外,你还可以使用 emulator -list-avds 命令列出所有可用的 AVD 名称,确认你要使用的 AVD 名称是否在列表中。
请尝试按照上述步骤指定正确的 AVD 名称来启动模拟器。
烧录到真机
搭载ubuntu 系统的电脑通过USB连接设备pixel 3a
1、adb reboot bootloader(进行bootloader)
2、fastboot flashing unlock(不同设备OEM解锁,我在欧洲版Pixel 3a,bootloader是可以解锁的,至于其他设备的可以查看谷歌烧录教程)
3、source ./build/envsetup.sh(如果执行了,可以不用执行)
lunch aosp_sargo-userdebug(如果执行了,可以不用执行)
export ANDROID_PRODUCT_OUT=/home/fzc/study/android-12.0.0_r9/out/target/product/sargo(这个附上自己的源码pixel 3a代号sargo产物路径-重要)
fastboot flashall -w
————————————————
版权声明:本文为CSDN博主「weixin_45767368」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45767368/article/details/105962606
一次编译成功后的命令记录:
1977 curl -sSL 'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
1978 chmod a+x ~/bin/repo
1979 repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-9.0.0_r8
1980 repo sync
1981 repo status
1982 opendir
1983 repo sync external/autotest --force-sync
1984 repo sync external/kmod --force-sync
1985 repo sync external/libunwind --force-sync
1986 git status
1987 repo sync external/libunwind --force-sync
1988 repo sync libcore --force-sync
1989 repo sync frameworks/compile/slang --force-sync
1990 repo sync external/libunwind --force-sync
1991 repo --trace sync external/libunwind -cdf
1992 source build/envsetup.sh
1993 lunch aosp_arm-eng
1994 make -j8
1995 source build/envsetup.sh
1996 lunch aosp_arm-eng
1997 make -j8
1998 emulator
1999 history
Android系统内置的三方sdk(不同Android版本可能不一样):

aac devlib google-tv-pairing-protocol libcap-ng libxml2 pdfium syslinux
abi-compliance-checker dexmaker gptfdisk libchrome libyuv perf_data_converter tagsoup
abi-dumper dhcpcd-6.8.2 guava libconstrainedcrypto linux-kselftest perfetto tcpdump
adhd dlmalloc guice libcups lisa piex tensorflow
android-clat dng_sdk hamcrest libcxx llvm ply testng
androidplot dnsmasq harfbuzz_ng libcxxabi lmfit ppp timezonepicker-support
annotation-tools doclava honggfuzz libdaemon ltp proguard tinyalsa
ant-glob drm_gralloc hyphenation-patterns libdivsufsort lz4 protobuf tinycompress
antlr drm_hwcomposer icu libdrm lzma puffin tinyxml
apache-commons-math droiddriver ImageMagick libedit markdown python tinyxml2
apache-harmony drrickorang ims libese mdnsresponder rappor toolchain-utils
apache-http dtc iproute2 libevent mesa3d replicaisland toybox
apache-xml e2fsprogs ipsec-tools libexif Microsoft-GSL rmi4utils tpm2
archive-patcher easymock iptables libffi minijail robolectric trappy
arm-neon-tests eigen iputils libgsm mksh robolectric-shadows tremolo
autotest elfutils iw libhevc mmc-utils roboto-fonts turbine
avb emma jacoco libjpeg-turbo mockftpserver rootdev unicode
bart error_prone jarjar libldac mockito safe-iop universal-tween-engine
blktrace esd javaparser libmicrohttpd mockwebserver scapy v4l2_codec2
boringssl expat javasqlite libmojo modp_b64 scrypt v8
bouncycastle eyes-free javassist libmpeg2 mp4parser seccomp-tests valgrind
brotli f2fs-tools jcommander libmtp mtpd selinux vboot_reference
bsdiff fdlibm jdiff libnetfilter_conntrack nanohttpd sfntly vixl
bzip2 fec jemalloc libnfnetlink nanopb-c shaderc vogar
caliper fio jline libnl naver-fonts shflags volley
capstone flac jmdns libogg netcat skia vulkan-validation-layers
cblas flatbuffers jsilver libopus neven skqp walt
chromium-libpac fonttools jsmn libpcap nfacct sl4a wayland
chromium-trace freetype jsoncpp libphonenumber nist-pkits slf4j wayland-protocols
chromium-webview fsck_msdos jsr305 libpng nist-sip smali webp
clang gemmlowp jsr330 libtextclassifier nos snakeyaml webrtc
cmockery gflags junit libunwind noto-fonts sonic webview_support_interfaces
cn-cbor giflib junit-params libunwind_llvm oauth sonivox wpa_supplicant_8
compiler-rt glide kernel-headers libusb objenesis speex wycheproof
conscrypt golang-protobuf kmod libusb-compat oj-libjdwp spirv-llvm x264
crcalc google-api-services-storage kotlinc libvncserver okhttp sqlite xmlrpcpp
cros google-benchmark ksoap2 libvpx one-true-awk squashfs-tools xmp_toolkit
curl google-breakpad libavc libvterm opencv strace xz-embedded
dagger2 google-fonts libbackup libxaac owasp stressapptest zlib
deqp google-styleguide libbrillo libxcam parameter-framework subsampling-scale-image-view zopfli