aosp Android系统源码编译

编译参考教程: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目录下配置文件


image.png

开始编译

make -j4

如果编译中出现失败

make clean
source build/envsetup.sh
launch  (选择平台)
make -j4

编译成功后

image.png
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版本可能不一样):

image.png
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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容