苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

其实早在 2016 年的时候,我就使用 ubuntu 编译过 Android 的源码,可是那个时候并没有深耕,所以一直也没有再进行过相关文章的发布。

时隔至今,当我想再深入 framework 的时候,我已经没有设备来安装 Linux 系统了,因为现在一直都是用 Mac os 电脑来开发。

不过翻阅了 Android Developer 官网,发现现在 Mac os 也能够编译 Android 源码了,这是惊喜万分啊!

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

那么如果你也有学习 framework 的想法,或者想单纯的编译一下源码,那么就继续读下去吧~~~

其实按照官网给的流程走一遍就能够成功了,不过由于我在走流程的过程中不是那么顺利,所以写下这篇文章,算为各位读者老爷趟一下。


从准备工作到编译一共分为 9 步:

第一步、创建区分大小写的磁盘映像

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

上图是官网的提示操作,当然不建议自己去磁盘工具那去搞,只需要直接在 terminal 中用下方的命令创建即可

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

这样,我们就创建了大小为 200 G 的磁盘映像文件。该文件在装载后可用作具有 Android 开发所需格式的存储卷。为什么这么大呢?因为后期的源码和编译需要用到这么大的空间,所以最好是准备这么大了。

如果你的电脑存储不够大,那么也可以使用下方的命令对大小进行调整。

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

比如

hdiutil resize -size 60g ~/android.dmg.sparseimage

这样就把刚才的映像文件调整为 60G 大小。

建立好之后,我们先不要急着挂载操作,我们先看后面的步骤。


第二步、安装 JDK

我们都安装过 JDK ,所以本步骤略。


第三步、安装 xcode

去官网安装对应的 xcode 版本即可,我电脑系统是 10.14

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

安装的 xcode 11.3.1

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

同时也安装了 11.3 版本的 xcode 命令行工具。

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)


第四步、安装MacPorts

通过 macports.org 安装 MacPorts。

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

需要注意的是,我的电脑在进入安装过程的时候很慢,不知道是不是都这样,如果你的安装也很慢,那么就多等会儿吧,我大概等了5分钟

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

安装完后,修改 ~/.bash_profile 配置文件

export PATH=/opt/local/bin:$PATH

添加到配置文件 ~/.bash_profile中。

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)


第五步、通过 MacPorts 获取 Make、git 和 GPG 程序包

使用下面命令即可

POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

同样,安装过程依旧很慢,主要和获取程序包的速度有关系,这一步我等了几十分钟…

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

不过耐心点,最后都是能装好的。


第六步、设置文件描述符数量上限

在 Mac os 中,可同时打开的文件描述符的默认数量上限太低,在高度并行的编译流程中,可能会超出此上限。

要提高此上限,请将下列行添加到 ~/.bash_profile 中:

ulimit -S -n 1024

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

这样我们就把「可同时打开的文件描述符的默认数量上限」调整为了 1024 个。


第七步、准备源代码

① 安装 Repo

首先确保主目录下有一个 bin/ 目录,并且该目录包含在路径中

mkdir ~/binPATH=~/bin:$PATH

然后下载 Repo 工具,并确保它可执行:

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a x ~/bin/repo

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

② 初始化 Repo 客户端

创建一个空目录来存放工作文件。WORKING_DIRECTORY 名字自己定义

mkdir WORKING_DIRECTORYcd WORKING_DIRECTORY

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

然后,配置 git 信息

git config --global user.name "Your Name"git config --global user.email "you@example.com"

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

最后,初始化 Repo

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

如果报 repo: command not found 的问题,那么只需执行下方命令即可

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc export PATH=$PATH:$HOME/bin

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

很可惜,这一步不能顺利进行下去了…

这个时候我们只能通过「镜像」来解决了,这里我们用「清华镜像」,整个镜像大小为 80 G 左右,所以一定要将电脑的剩余空间多腾一些… 或者是外接移动硬盘。

继续下载,于是开始了漫长的等待…

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

功夫不负有心人,终于下载完了。

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

不过下一步,该看下你的电脑硬盘的剩余空间了,因为这个压缩版就有80 G,那么解压之后就会超过100G,所以如果你的电脑剩余空间没有100 G 以上,那么建议把这个源码包放到移动硬盘里面,然后再从移动硬盘解压吧。

解压

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

解压完成后,我们会得到一个.repo 的文件夹

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

然后,我们将源码进行同步

repo sync

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

同步时间很长,我这个电脑同步了差不多25分钟,这样我们的Android 源码就准备好了,同步完成后的 aosp 结构如下

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)


第八步、准备编译

① 下载预览二进制文件

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

下载下来后,解压得到

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

② 然后运行这个 sh 文件

sh  文件名.sh

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

需要看下协议

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

安装完成

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

③ 安装完成后,会在执行 su 命令的目录下创建一个 vendor 的文件夹

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

将此文件夹复制到源代码的根目录下,即 aosp 目录下。

④ 然后执行

make -f Makefile clobber

以避免之前进行的 build 干扰到接下来的 build。

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)


第九步、开始编译

① 先初始化环境

source build/envsetup.sh

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

② 然后使用 lunch 展示要编译的目标

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

这里我选择了 24,所以后期可以直接执行 lunch 24 即可,注意这里的选择跟你手上有什么型号的设备有关系,由于我手头上没有 Google 亲儿子的机器,所以这里就随便编译一个了。

现在我们直接进入下一步:编译阶段


使用 make 编译代码,如果想增加编译速度,可以借助 -jN 参数处理并行任务,比如我的电脑是双核4线程的,最快编译速度可以达到 8个线程同时编译,所以可以使用

make -j8

进行编译。第一次编译的时间很长很长,建议早上把电脑打开,然后让他开始编译去吧,我是快要吃晚饭的时候发现编译好了…

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

看到绿色的字出现,我就松了一口气,这几天的折腾没有白费啊!

#### build completed successfully (01:04:37 (hh:mm:ss)) ####

这样我们的源码就算编译好了,在

苹果电脑能编译 Android 源码吗?(苹果电脑编程android系统)

aosp->out->target->product 下就有我们要用的源码了。


运行模拟器

如果在 Linux 系统下,直接运行 emulator 命令就能将我们编译好的 aosp 跑到虚拟机里面去。

而 Mac os 则比较费劲了,反正我尝试了各种办法,最终还是没有将编译好的代码跑到虚拟机上。

这两天考虑搞个 nexus 手机或者 pixel 手机,来刷下 aosp 源码。

现在先将输入的流程标记一下,等手机送到时再开搞,到时候说不定我会再发一个后续的文章。

将 “编译后的代码” 刷入到真机流程

① 插上真机

② 执行

sudo adb reboot bootloader

让手机重启成为 fastboot 模式

如果此时手机界面展示

DEVICE_STATE – locked

那么需要再执行

fastboot oem unlock

让手机解锁

③输入

fastboot flashall -w

刷入我们编译好的 “源码”,然后等待即可。

由于目前没有真实的测试刷入的流程是否会有异常,这里我就不多说了。

如果看了这篇文章的朋友,恰好手头上有 nexus 手机 或者 pixel 手机,一定要先搜索了解自己的手机可以恢复原系统的方法之后,再进行本文章的刷机操作;

并且在编译源码的时候,一定要先选择自己手机支持的源码,再进行后续操作。

否则手机刷成砖后就刷不回来,那就浪费了~~~

本篇文章就到这里,虽然历时将近一周,其实本身并不难,只要按照流程一步一步来就行,只不过由于下载源码、解压、同步、编译会耗费点时间,所以拖到了今天。

后续有关 framework 的文章也会持续输出,敬请期待!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月26日 下午4:37
下一篇 2023年4月26日 下午4:47

相关推荐

  • 如何通过项目管理进行管理

    如何通过项目管理进行管理 项目管理已经成为了现代企业的重要管理方法之一。通过项目管理,企业可以实现高效的项目执行,降低项目风险,提高项目成功的几率。那么,如何通过项目管理进行管理呢…

    科研百科 2024年8月27日
    31
  • 火爆财务圈的出纳台账模板,你不会还不知道吧?(出纳台账怎么做)

    我的一个朋友在一家公司做出纳工作,整天做着报销,打款,登记银行流水,汇票,跑银行这些业务,跟我也是整天抱怨,工作又多又乱,就怕做错了。 我知道后就给她一套出纳台账模板,和一些单据的…

    2022年6月1日
    287
  • vue项目管理

    Vue项目管理 随着Vue.js框架的普及和广泛应用,项目管理也成为了一个备受关注的话题。Vue项目管理可以帮助项目团队更好地管理和协调项目,提高项目进度和质量。本文将探讨Vue项…

    科研百科 2024年9月15日
    35
  • 项目管理软件app有哪些

    项目管理软件是一种用于跟踪和管理项目的工具,可以帮助团队更好地协作和提高效率。随着现代软件开发的日益复杂,项目管理软件的需求也越来越高。今天,我们介绍一些最受欢迎的项目管理软件应用…

    科研百科 2024年8月19日
    60
  • 科研研发管理软件,FYI和逐级上报

    FYI和逐级上报是一种简单的方法,可将严重障碍和团队采用的解决方案通知项目负责人。这使项目负责人有机会在花费大量时间或资源之前权衡解决方案。FYI用于将已分配给团队成员的障碍通知项…

    科研百科 2022年7月8日
    290
  • 科研项目聘人员

    科研项目聘人员: 推动科技创新的关键力量 科研项目聘人员是推动科技创新的关键力量。他们通常是科研团队的核心成员,负责设计实验、采集数据、分析结果等工作。他们具备专业知识、实践经验和…

    科研百科 2025年2月20日
    0
  • 核酸试管科研项目

    核酸试管科研项目 随着新冠疫情的爆发,人们对于核酸检测的需求越来越高。然而,传统的核酸检测方法需要进行样本采集、分离、提取等复杂的操作,操作时间长、成本高,并且存在一定的误差率。因…

    科研百科 2025年2月9日
    0
  • 在线项目管理工具 免费

    在线项目管理工具免费使用:提高团队协作效率 随着互联网的发展,在线项目管理工具已经成为了许多企业和个人提高工作效率和团队协作的必备工具。本文将介绍一些免费的在线项目管理工具,帮助企…

    科研百科 2024年8月13日
    38
  • 巡察微故事 – 不入账的集体资金

     “多亏巡察组,现在在村委会财务公开栏里,自来水厂的各项收入、支出写得清清楚楚,我们心里也有本明白账了。”江西省信丰县新田村的村民们对前来回访的县委第四巡察组同志们说到。   新田…

    科研百科 2022年9月7日
    186
  • 建立党建工作三级联系制度 全面加强基层党的建设(基层党建三个组织化)

    来源:旗帜 ——访新华社党组成员、副社长、机关党委书记严文斌 2019年,新华社建立机关党建工作三级联系制度(以下简称“三级联系制度”),对机关党委常委、部门单位党员领导干部、党支…

    科研百科 2023年1月5日
    453