sudo スナップインストールカール
それからフォローしてください
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
リポジトリをインストールします:
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
最初の同期では約 60 GB のデータをダウンロードする必要があるため、プロセス中にネットワーク障害が発生すると同期が失敗する可能性があります。初期化には初期化パッケージを使用することを強くお勧めします。
curl -OC - https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包tar xf aosp-latest.tar
cd AOSP # 解压得到的 AOSP 工程目录# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
sudo apt install python2
sudo ln -s /usr/bin/python2 /usr/bin/python
sudo apt install git
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-12.0.0_r3
repo sync# 正常同步一遍即可得到完整目录# 或 repo sync -l 仅checkout代码
同期コード
上記のステップ 3 では .repo ファイルをダウンロードしただけですが、特定のコードではダウンロードするために repo sync を実行する必要もあります。ミラー サイトの制限とダウンロード プロセス中に発生する可能性がある問題のため、ダウンロードには -j4 を使用することをお勧めします。
repo sync -j4
. コードのコンパイル
コードとドライバーがダウンロードされたら、コードのコンパイルを開始できます。新しいバージョンでは Mac のコンパイルがサポートされなくなったため、コンパイルには引き続き Linux を使用することをお勧めします。Ubuntu を使用することをお勧めします。
3.1 コンパイル環境のセットアップ
参考:https://source.android.google.cn/setup/build/initializing
Ubuntu 18.04 以降で直接実行します。
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
3.2 コードのコンパイル環境のセットアップ
シェルを閉じるたびに、次のスクリプトを再実行する必要があります。これは、コンパイル環境を構成するのと同じです。
source build/envsetup.sh
または
. build/envsetup.sh
3.3 コンパイル対象の選択
lunch
ランチを実行した後は、選択できるデバイスがたくさんあります。例として私の Pixel 3 XL を取り上げます。そのコード名は です。すべてのモデルの対応するコード名は、ここで確認できます: https://source . android.google.cn/ setup/build/running#selecting-device-buildPixel 3 XLに対応するコードネームは次のとおりです:クロスハッチ
対応するモデルを探す
そこで、aosp_crosshatch-userdebug をコンパイルすることにしました。ここで数値を入力するか、aosp_crosshatch-userdebug を直接入力できます。
ランチオプション
然后脚本会进行一系列的配置,输出下面的内容
编译配置展示
3.4 全部编译
使用 m 构建所有内容。m 可以使用 -jN 参数处理并行任务。如果您没有提供 -j 参数,构建系统会自动选择您认为最适合您系统的并行任务计数
m
如上所述,您可以通过在 m 命令行中列出相应名称来构建特定模块,而不是构建完整的设备映像。此外,m 还针对各种特殊目的提供了一些伪目标。以下是一些示例:
droid - m droid 是正常 build。此目标在此处,因为默认目标需要名称。
all - m all 会构建 m droid 构建的所有内容,加上不包含 droid 标记的所有内容。构建服务器会运行此命令,以确保包含在树中且包含 Android.mk 文件的所有元素都会构建。
m - 从树的顶部运行构建系统。这很有用,因为您可以在子目录中运行 make。如果您设置了 TOP 环境变量,它便会使用此变量。如果您未设置此变量,它便会从当前目录中查找相应的树,以尝试找到树的顶层。您可以通过运行不包含参数的 m 来构建整个源代码树,也可以通过指定相应名称来构建特定目标。
mma - 构建当前目录中的所有模块及其依赖项。
mmma - 构建提供的目录中的所有模块及其依赖项。
croot - cd 到树顶部。
clean - m clean 会删除此配置的所有输出和中间文件。此内容与 rm -rf out/ 相同。
运行 m help 即可查看 m 提供的其他命令
输入 m 之后开始第一次全部编译,漫长的等待,编译时间取决于你的电脑配置... 主要是 cpu 和内存,建议内存 32G 走起,cpu 也别太烂
编译准备界面
编译成功之后,会有下面的输出
整机编译成功
4. 刷机
自己编译的 UserDebug 固件用来 Debug 是非常方便的,不管是用来 Debug Framework 还是 App
编译好之后下面开始刷机,以我的测试机器 Pixel 3 XL 为例,依次执行下面的命令
adb reboot fastboot
# 等待手机进入 fastboot 界面之后
fastboot flashall -w
# 刷机完成之后,执行 fastboot reboot 长期系统即可
fastboot reboot