• A_02.Aosp11源码编译


    A_02.Aosp11源码编译

    本节主要内容:

    • 安卓11源码编译环境配置

    • pixel 3手机源码驱动文件配置

    • 安卓源码中编译Pixel 3设备手机镜像

    1.编译环境构建

    • 安装所需的软件包:
    qiang@ubuntu:~/Aosp11$ sudo apt-get install git-core gnupg flex bison build-essential zip
    curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev 
    x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip 
    fontconfig
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.配置手机设备的驱动文件

    (1).查找源代码版本对应的代号

    安卓Aosp源码中支持很多个设备的镜像编译,在编译之前需要配置对应设备依赖的驱动文件。此处下载的源码版本为:android-11.0.0_r46。对应安卓源码代号为:RQ3A.211001.001。具体源代码版本对应的代号以及支持的手机设备可以如下官网中查找:https://source.android.google.cn/setup/start/build-numbers。如下是该官网中找到的本编译版本结果。如下所示:

    在这里插入图片描述

    (2).下载对应手机型号的驱动配置文件

    Google已为Aosp源码中支持的设备提供了对应的驱动文件支持。在官网:https://developers.google.cn/android/drivers可以找到对应系统版本和手机设备的驱动文件。此处需要编译的设备为pixel 3手机,手机系统版本为:android-11.0.0_r46,代号为:RQ3A.211001.001。在驱动官网找到对应的驱动文件如下:

    在这里插入图片描述

    点击页面中的"Link"下载对应的驱动文件包,并分别解压到源码根目录。如下所示:

    qiang@ubuntu:~/Aosp11$ 
    qiang@ubuntu:~/Aosp11$ pwd
    /home/qiang/Aosp11
    qiang@ubuntu:~/Aosp11$ ls -la extract-*
    -rwxr-x--x 1 qiang qiang 263013256 Sep 23  2021 extract-google_devices-blueline.sh
    -rwxr-x--x 1 qiang qiang   1094338 Sep 23  2021 extract-qcom-blueline.sh
    qiang@ubuntu:~/Aosp11$ 
    qiang@ubuntu:~/Aosp11$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    (3).执行驱动shell提取脚本

    分别在终端执行extract-google_devices-blueline.shextract-qcom-blueline.sh脚本提取设备对应的驱动文件。该脚本执行完成之后,会自动在源码目录vendor中生成设备对应的驱动文件相关配置文件。命令执行如下:

    qiang@ubuntu:~/Aosp11$ ./extract-google_devices-blueline.sh 
    qiang@ubuntu:~/Aosp11$ ./extract-qcom-blueline.sh 
    
    • 1
    • 2

    注意事项:
    执行以上两个脚本之后,会显示一个文本协议,需要按*"Enter"键拉到底部,然后输入"I ACCEPT"的信息之后才能提取成功。如下所示:

    在这里插入图片描述

    3.源码编译

    执行如下命令进行Pixel 3设备的镜像编译。命令如下:

    qiang@ubuntu:~/Aosp11$ source  build/envsetup.sh 
    qiang@ubuntu:~/Aosp11$ lunch
    
    You're building on Linux
    
    Lunch menu... pick a combo:
         1. aosp_arm-eng
         2. aosp_arm64-eng
         3. aosp_blueline-userdebug
         4. aosp_blueline_car-userdebug
         5. aosp_bonito-userdebug
         54. yukawa_sei510-userdebug
    
    Which would you like? [aosp_arm-eng] 3
    
    ============================================
    PLATFORM_VERSION_CODENAME=REL
    PLATFORM_VERSION=11
    TARGET_PRODUCT=aosp_blueline
    TARGET_BUILD_VARIANT=userdebug
    TARGET_BUILD_TYPE=release
    TARGET_ARCH=arm64
    TARGET_ARCH_VARIANT=armv8-a
    TARGET_CPU_VARIANT=generic
    TARGET_2ND_ARCH=arm
    TARGET_2ND_ARCH_VARIANT=armv8-a
    TARGET_2ND_CPU_VARIANT=generic
    HOST_ARCH=x86_64
    HOST_2ND_ARCH=x86
    HOST_OS=linux
    HOST_OS_EXTRA=Linux-5.13.0-44-generic-x86_64-Ubuntu-20.04.4-LTS
    HOST_CROSS_OS=windows
    HOST_CROSS_ARCH=x86
    HOST_CROSS_2ND_ARCH=x86_64
    HOST_BUILD_TYPE=release
    BUILD_ID=RQ3A.211001.001
    OUT_DIR=out
    PRODUCT_SOONG_NAMESPACES=device/google/crosshatch hardware/google/av hardware/google/camera hardware/google/interfaces hardware/google/pixel hardware/qcom/sdm845 vendor/google/camera vendor/qcom/sdm845 vendor/google/interfaces vendor/qcom/blueline/proprietary
    ============================================
    qiang@ubuntu:~/Aosp11$ make -j6
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    以上命令说明:

    • source build/envsetup.sh命令初始化编译环境。

    • lunch命令列举当前源码支持的设备编译列表。由于此处的测试机为pixel 3,对应系统源码设备代号为:blueline,所以选择:3. aosp_blueline-userdebug进行编译。

    • make -j6表示开启6个并行任务数进行编译,此处j6可以根据电脑处理器进行调整。

    以上命令编译的镜像为userdebug镜像,具有root权限和调试功能。如果想编译user模式镜像(user类型的镜像权限受限,适用于生产环境)。可以参考如下命令执行编译。

    qiang@ubuntu:~/Aosp11$ source  build/envsetup.sh 
    qiang@ubuntu:~/Aosp11$ lunch
    
    You are building on Linux
    
    Lunch menu... pick a combo:
         1. aosp_arm-eng
         2. aosp_arm64-eng
         3. aosp_blueline-userdebug
        
    
    Which would you like? [aosp_arm-eng] 3
    
    ============================================
    PLATFORM_VERSION_CODENAME=REL
    PLATFORM_VERSION=11
    TARGET_PRODUCT=aosp_blueline
    TARGET_BUILD_VARIANT=userdebug
    TARGET_BUILD_TYPE=release
    TARGET_ARCH=arm64
    TARGET_ARCH_VARIANT=armv8-a
    TARGET_CPU_VARIANT=generic
    TARGET_2ND_ARCH=arm
    TARGET_2ND_ARCH_VARIANT=armv8-a
    TARGET_2ND_CPU_VARIANT=generic
    HOST_ARCH=x86_64
    HOST_2ND_ARCH=x86
    HOST_OS=linux
    HOST_OS_EXTRA=Linux-5.13.0-44-generic-x86_64-Ubuntu-20.04.4-LTS
    HOST_CROSS_OS=windows
    HOST_CROSS_ARCH=x86
    HOST_CROSS_2ND_ARCH=x86_64
    HOST_BUILD_TYPE=release
    BUILD_ID=RQ3A.211001.001
    OUT_DIR=out
    PRODUCT_SOONG_NAMESPACES=device/google/crosshatch hardware/google/av hardware/google/camera hardware/google/interfaces hardware/google/pixel hardware/qcom/sdm845 vendor/google/camera vendor/qcom/sdm845 vendor/google/interfaces vendor/qcom/blueline/proprietary
    ============================================
    
    qiang@ubuntu:~/Aosp11$ choosecombo 
    Build type choices are:
         1. release
         2. debug
    
    Which would you like? [1] 1
    
    
    Which product would you like? [aosp_blueline] 
    
    
    Variant choices are:
         1. user
         2. userdebug
         3. eng
    Which would you like? [eng] 1
    
    ============================================
    PLATFORM_VERSION_CODENAME=REL
    PLATFORM_VERSION=11
    TARGET_PRODUCT=aosp_blueline
    TARGET_BUILD_VARIANT=user
    TARGET_BUILD_TYPE=release
    TARGET_ARCH=arm64
    TARGET_ARCH_VARIANT=armv8-a
    TARGET_CPU_VARIANT=generic
    TARGET_2ND_ARCH=arm
    TARGET_2ND_ARCH_VARIANT=armv8-a
    TARGET_2ND_CPU_VARIANT=generic
    HOST_ARCH=x86_64
    HOST_2ND_ARCH=x86
    HOST_OS=linux
    HOST_OS_EXTRA=Linux-5.13.0-44-generic-x86_64-Ubuntu-20.04.4-LTS
    HOST_CROSS_OS=windows
    HOST_CROSS_ARCH=x86
    HOST_CROSS_2ND_ARCH=x86_64
    HOST_BUILD_TYPE=release
    BUILD_ID=RQ3A.211001.001
    OUT_DIR=out
    PRODUCT_SOONG_NAMESPACES=device/google/crosshatch hardware/google/av hardware/google/camera hardware/google/interfaces hardware/google/pixel hardware/qcom/sdm845 vendor/google/camera vendor/qcom/sdm845 vendor/google/interfaces vendor/qcom/blueline/proprietary
    ============================================
    
    
    qiang@ubuntu:~/Aosp11$ make -j6
    
    ware/qcom/sdm845 vendor/google/camera vendor/qcom/sdm845 vendor/google/interfaces vendor/qcom/blueline/proprietary
    ============================================
    
    
    qiang@ubuntu:~/Aosp11$ make -j6
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89

    视频地址:Aosp源码编译

  • 相关阅读:
    CDC Schemes
    【文本检测与识别白皮书-3.2】第二节:基于注意力机制和CTC的场景文本识别方法的对比
    利用视觉分析技术提升水面漂浮物、水面垃圾检测效率
    源码学习之MyBatis的底层查询原理
    (2022版)一套教程搞定k8s安装到实战 | Volumes
    网络安全(黑客)自学笔记
    golang 锁bug 记录
    Java学习 (九)基础篇 包机制&JavaDoc
    java.lang.Object类(equals()方法、toString()方法)
    Kubernetes学习笔记-kubernetes API服务器的安全防护(1)通过基于角色的权限控制加强集群安全20220814
  • 原文地址:https://blog.csdn.net/xiaomaNo01/article/details/126296655