美文网首页
下载,编译 AOSP

下载,编译 AOSP

作者: 梧叶已秋声 | 来源:发表于2023-05-27 09:58 被阅读0次

    首先,请先确保本机配置好git。

    1.下载 repo 工具

    mkdir ~/bin
    PATH=~/bin:$PATH
    curl https://storage.googleapis.com/git-repo-downloads/repo> ~/bin/repo
    chmod a+x ~/bin/repo
    

    2. 建立工作目录

    可以在任何地方(保证权限的前提下)建立一个任意名称的工作目录,此处命名为 android

    mkdir android
    cd android
    

    3. 修改repo内镜像地址

    打开~/bin/repo,修改REPO_URL,改为'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

    image.png

    4.初始化仓库

    repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest
    

    默认是default,使用的是master.

    执行 repo manifest 可查看当前manifest

    image.png
    如需下载其他分支,可在manifest目录下查看。

    https://android.googlesource.com/platform/manifest

    然后加上 -b android-xxx 。例如:

    repo init -u <https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest> -b android-13.0.0_r49
    

    5. 同步代码

    repo sync -j4
    

    由于 AOSP 镜像造成CPU/内存负载过重,限制了并发数量,因此建议:

    1. sync的时候并发数不宜太高,否则会出现 503 错误,即j后面的数字不能太大,建议选择4。
    2. 请尽量选择流量较小时错峰同步。

    同步完后,创建并切换到本地master分支

    repo start master --all
    

    6.安装基础编译环境

    
    # Google原生Android源码编译依赖库
    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
    # 安装openjdk
    sudo apt-get install openjdk-11-jdk
    
    

    7.编译

    加载环境变量,并lunch。

    source build/envsetup.sh
    lunch 
    
    image.png

    没有设备不用烧录的话,就随便选一个,例如2,也可以自定义其他的,例如 aosp_arm64-userdebug。

    然后执行make 编译,并输出编译log。

    make -j24 2>&1 | tee build.java
    

    8. AOSP切分支

    AOSP使用Repo + git 管理,manifest 配置了git仓位置,切分支之前要先切换manifest。

    8.1 切换manifest

    进入 .repo/manifests

    cd .repo/manifests
    
    image.png

    建立本地分支,并关联到远程分支。

    git checkout -b android13 origin/android-13.0.0_r49
    

    这里由于我不会涉及到push,所以分支名就随便一点了.
    实际使用中,本地分支名最好保持跟远程分支名一致.

    image.png

    repo manifest 查看当前manifest,可以看到revision发生了改变,之前是master。


    image.png

    8.2 创建本地分支,切换,同步

    repo start android13_r49 --all
    repo sync
    

    这样分支就切换好了。

    可以使用 repo branch 查看。

    8.3 其他注意点

    切了manifest之后,由于git仓配置不一样,可能会导致下面这种情况出现,即当前manifest下,Git 仓库中不存在指定的分支:

    image.png
    使用git branch -D删除分支 会出现skipping
    repo forall -c git branch -D  android13_r49
    repo forall -c git branch -D  master
    

    如果在执行 repo forall -c git branch -D <branch> 命令时出现 skipping 提示,这通常意味着 Git 仓库中不存在指定的分支。如果分支存在于某个 Git 仓库中,但是在其他 Git 仓库中不存在,那么 repo forall 命令会跳过那些不存在该分支的 Git 仓库,并显示 skipping 提示。

    如果想要删除 android13_r49 分支,可以使用以下命令:

    repo abandon android13_r49
    

    执行此命令后,repo 会将 android13_r49 分支标记为废弃,并从所有 Git 仓库中删除该分支。

    尽量确保所有代码在一个branch中。


    image.png

    如果修改太多,要批量撤销所有修改,可以使用以下命令:

    repo forall -c git reset --hard
    

    执行此命令后,repo 会遍历所有 Git 仓库,并在每个仓库中执行 git reset --hard 命令来撤销所有未提交的更改。

    有时候,还会遇到 头指针分离 的情况(例如manifest新增了代码仓配置)。

    repo branch 可以看到,代码仓没有全部在一个分支上。

    image.png
    image.png
    进入不在分支的仓库, git branch ,显示头指针分离。

    这种情况表示您当前不在任何分支上,而是直接在某个提交上进行工作。这被称为“头指针分离”。

    这里可以使用repo切的master分支,也可以用git 切换分支。

    image.png
    参考链接:
    Android 镜像使用帮助
    Android Platform Manifest
    清华 AOSP 镜像源配置笔记
    Android 13源码下载及编译
    【android Framework 探究】android 13 aosp 全记录 - 编译

    相关文章

      网友评论

          本文标题:下载,编译 AOSP

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