MacOS使用Docker编译安卓源码

996.icu LICENSE

  • 问题背景
  • 解决方法
  • 总结

阅读之前注意:

本文阅读建议用时:10min
请谨慎参考本文,申请的磁盘镜像空间可能无法返回给原磁盘空间
本文阅读结构如下表:

项目下属项目测试用例数量
问题背景0
解决方法1
总结0

问题背景

对安卓源码比较感兴趣,尝试着编译了一下。目前最简单的方法,似乎就是用Docker这种虚拟机来进行编译了。

解决方法

  1. 根据官网的说明,通过repo来拉取安卓对应版本的分支,每个版本的安卓源码的拉取和编译可能会达到300G或者更多。
  2. 执行如下命令,创建一个200G的区分大小写的磁盘镜像 hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 200g ~/android.dmg
  3. 执行以上命令后,会生成 android.dmg 或者 android.dmg.sparseimage 文件,如果后期感觉磁盘镜像太小,要设置成300g,可以执行以下命令 hdiutil resize -size 300g ~/android.dmg.sparseimage
  4. 接着把建立的磁盘镜像挂载到 /Volumes/android 目录下,即执行如下指令 hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android
  5. 挂载成功后,就可以在 /Volumes/android 目录下进行安卓源码的下载和编译了,之后我们就通过repo来拉取安卓源码,最后通过Docker虚拟机在这个目录下进行编译。
  6. 到了下载步骤,首先要通过homebrew来安装repo,即打开终端执行 brew install repo
  7. 终端切换到 /Volumes/android 目录,下载安卓源码。比如我要下载的是android-4.4.4_r2.0.1,则以此执行如下指令
$ cd /Volumes/android
$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-4.4.4_r2.0.1
$ repo sync -c
  1. 完成下载后,就可以在Docker中进行编译了。

相关的坑:

  1. error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly。遇到这种情况,似乎是http2的bug。需要另外打开终端执行 git config --global http.version HTTP/1.1
  2. … A new repo (2.8) is available。这种情况,打开终端执行 sudo cp /Volumes/android/.repo/repo/repo /usr/local/bin/repo,其中路径要根据你终端的提示来改,源路径和目标路径都要改。
    在这里插入图片描述

其他小技巧:

  1. 如果想要查看check out出来的分支有多大,cd到对应目录下执行du -sh *就会列出当前目录各个文件夹占用空间的大小。

总结

一句话总结:建立磁盘镜像,挂载磁盘镜像,通过repo来下载安卓源码,最后通过Docker来编译安卓源码。

在这里插入图片描述

参考资料

  1. Android软件安全权威指南
  2. error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly
  3. 下载Android源码出现的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
macOS使用Docker有几种选择。一种选择是使用Docker Desktop,它是官方提供的Docker解决方案。你可以下载Docker.dmg文件,双击安装,然后在应用程序中找到Docker图标并点击运行。启动Docker时可能需要输入macOS的登录密码。你可以通过命令行检查安装后的Docker版本。\[1\] 然而,根据一些用户的反馈,Docker Desktop在mac上可能存在一些问题,比如安装包体积大、UI卡顿、启动速度慢等。因此,如果你是重度使用Docker并且有定制化需求的用户,推荐使用Lima虚拟机。Lima支持多种操作系统,并且官方提供了许多样例模板,非常适合重度容器使用者。\[2\] 另外,还有一种选择是使用Colima方案。Colima相对于Docker Desktop来说还不太成熟,适合轻度使用Docker的用户。\[2\] 综上所述,对于macOS使用Docker,你可以选择Docker Desktop、Lima虚拟机或Colima方案,具体选择取决于你的使用需求和个人偏好。 #### 引用[.reference_title] - *1* [MacOS Docker 安装配置及基本使用](https://blog.csdn.net/u011019141/article/details/120762431)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* *3* [MacDocker使用](https://blog.csdn.net/yaxuan88521/article/details/125440223)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值