美文网首页
Ubuntu 18.04 WMware 编译 AOSP andr

Ubuntu 18.04 WMware 编译 AOSP andr

作者: westinyang | 来源:发表于2021-12-01 17:10 被阅读0次

    0 前言

    笔者在编译之前并没有加入专有二进制文件(后续加入了再补充笔记),以供真机运行时一些硬件设备驱动都正常运行,详细请参考谷歌官方教程:https://source.android.com/setup/build/downloading#obtaining-proprietary-binaries 自备出国留学工具

    主机配置:Windows 10 HOME | I7 12700KF | 海盗船 32G DDR4 3200MHz 双通道 | 西数 SN570 1T PCIE 3.0
    虚拟环境:Ubuntu 18.04 Bionic (VMware) | 8C 16G
    编译目标:NZH54D | android-7.1.2_r33 | Pixel (sailfish)、Pixel XL (marlin)

    准备开始,接下来的每个完成一个步骤,都打个备份点,方便还原编译其它AOSP版本

    1 系统安装

    虚拟机和系统安装过程省略(网上大堆教程)...

    改源

    # backup sources.list
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
    # replace
    sudo sed -i 's#//.*archive.ubuntu.com#//mirrors.aliyun.com#g'   /etc/apt/sources.list
    sudo sed -i 's#//.*security.ubuntu.com#//mirrors.aliyun.com#g'  /etc/apt/sources.list
    # update
    sudo apt update
    

    安装常用软件包

    sudo apt install curl vim htop tmux lolcat tree
    

    关闭屏幕休眠

    设置 → 电源 → 节点 → 改为从不
    

    2 源码同步(环境准备)

    python

    sudo apt install python
    

    git

    sudo apt install git
    git config --global user.email "youremail@email.com"
    git config --global user.name "yourname"
    

    repo

    mkdir ~/bin
    PATH=~/bin:$PATH
    curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
    # curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    chmod a+x ~/bin/repo
    

    3 源码同步

    如果不指定分支默认获取 master,如需签出 master 之外的其他分支,请使用 -b 指定此分支。 如需查看分支列表,请参阅源代码标记和 build

    cd; mkdir aosp; cd aosp;
    repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.1.2_r33 --repo-url=https://gerrit-googlesource.lug.ustc.edu.cn/git-repo
    repo sync -j8 # 同步源码到最新状态,-j8 是开启八个线程同时下载
    

    大概要下载100多g,联通500M,实测耗时70分钟左右

    4 源码编译(环境准备)

    当前记录是针对 android 7.1.2,依赖环境如下,如果编译更高版本,环境也许不同,所以编译环境在下载源码之后进行会方便VMware打备份点

    jdk

    sudo apt install openjdk-8-jdk
    

    提前修复编译时错误:SSL error when connecting to the Jack server. Try 'jack-diagnose'

    • sudo vim /etc/java-8-openjdk/security/java.security
    • 搜索找到这行代码:jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
    • 删除 TLSv1, TLSv1.1, 后保存

    如果没有提前修复,而是编译过程中报错了再修复这个问题的话,需要在修复之后重启 jack-admin,命令如下

    • cd ~/aosp/prebuilts/sdk/tools/
    • ./jack-admin kill-server
    • ./jack-admin start-server

    python

    Ubuntu 18.04 自带 Python 3.6.9,编译 aosp 7.1.2 需要用 Python 2.x
    如果编译更高版本可能依赖 Python 3,命令如下,现在不需要执行

    # sudo apt install python3
    # sudo ln -sfn /usr/bin/python3 /usr/bin/python
    

    其他

    sudo apt 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
    

    5 源码编译

    开始编译

    如果在没有参数的情况下运行,则 lunch 会提示您从菜单中选择目标。如需了解所有现有设备的构建配置,请参阅择设备构建系统
    make -j20 是使用多少个线程编译,一般为CPU核心数×2,我这里多给了4,实测也没什么问题,并且编译速度确实提升了不少。

    # cd ~/aosp
    # rm -rf out
    export LC_ALL=C
    source build/envsetup.sh
    lunch 18 # aosp_sailfish-userdebug
    make -j20
    

    编译成功

    实测耗时
      8C 16G make j16 35分 CPU占用50%左右
      8C 16G make j20 30分 CPU占用55%左右 资源占用和耗时比 最佳
    10C 20G make j20 28分 CPU占用65%左右
    12C 16G make j24 27分 CPU占用80%左右
    12C 24G make j24 26分 CPU占用80%左右

    输出目录 out/target/product/产品代号

    ubuntu@ubuntu1804:~/aosp/out/target/product/sailfish$ du -h *.img
    25M     boot.img
    6.4M    ramdisk-recovery.img
    1.5M    ramdisk.img
    825M    system.img
    223M    system_other.img
    146M    userdata.img
    

    相关文章

      网友评论

          本文标题:Ubuntu 18.04 WMware 编译 AOSP andr

          本文链接:https://www.haomeiwen.com/subject/zdgsxrtx.html