侧边栏壁纸
博主头像
百晓生 博主等级

Keep Share Keep Geek

  • 累计撰写 10 篇文章
  • 累计创建 19 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Mac Android源码编译

Administrator
2025-06-14 / 0 评论 / 0 点赞 / 26 阅读 / 0 字

编译环境搭建

1.创建磁盘

hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 300g ~/android.dmg

创建一个叫~/android.dmg的挂载磁盘 大小建议300G,因为我编译最新的android11系统 花去了249G的空间

如果需要修改磁盘则 使用该命令操作

hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

2.挂载磁盘

hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android

选择挂载对应的磁盘和挂载点,选择Volumes下的android文件夹

如果需要卸载已挂载磁盘则,使用前请确保磁盘已完整无占用

hdiutil detach /Volumes/android

3.安装需要的依赖包

  • 安装Xcode命令行
xcode-select --install
  • 通过 macports.org 安装 MacPorts。

    安装完后将该环境变量添加到对应的profile文件 zsh对应 ~/.zshrc , bash对应 ~/.bash_profile

    export PATH=/opt/local/bin:$PATH
    
  • 安装gmake, libsdl, git, gnupg, bison

    POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg bison
    

4.设置文件描述符上限制

ulimit -S -n 4096

建议设置大一些,取决于 后续使用的make -jx对应的核心数,核心数越大同时打开的文件越多,设置小了很容易就超出了对应的大小

5.ccache

可参考 https://source.android.com/source/initializing?hl=zh-cn#ccache

我没有设置,编译也是一次通过

下载源代码

1.创建工作目录

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

2.安装repo启动器

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

3.初始化repo

repo init -u https://android.googlesource.com/platform/manifest

我使用的是google自己的源码地址,可以改成国内的源码镜像站

如需要选择对应的编译分支

repo init -u https://android.googlesource.com/platform/manifest -b <branch what you need>

可进入网站https://android.googlesource.com/platform/manifest/+refs查看对应的branch列表 选择对应的b ranch

4.在工作目录下同步代码

repo sync -c -j8

-c指定当前分支 -j8 指定线程

不出问题很快代码就同步完成了

编译源代码

1.脚本初始化环境

source build/envsetup.sh

2.选择编译平台

lunch

选择对应的平台,比如x86-64位的就选择对应的平台

3.开始编译

make -j8

-jx 对应开启核心进行编译,编译完成会提示该信息

#### build completed successfully (23:29:05 (hh:mm:ss)) ####

如果有报错参考官方文档进行排错

运行

emulator

假如报错

emulator: ERROR: Can't find 'Linux version ' string in kernel image file: /Volumes/android/WORKING_DIRECTORY/out/target/product/generic_x86_64/kernel-ranchu

请检查emulator 目录

which emulator    

假设是prebuild内的emulator 替换成 android studio 内的emulator 运行

参考文献

0

评论区