苹果电脑能编译 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年10月12日
    8
  • 水牛研究所宿舍

    水牛研究所宿舍 水牛研究所宿舍是一处位于美国佛罗里达州的宿舍,专门为水牛进行饲养和研究而设计。宿舍规模不大,却十分干净整洁,有着良好的住宿条件和必要的设施。 宿舍的居民们都是水牛饲…

    科研百科 2024年10月17日
    2
  • 从0到330亿,国产协同办公历经这四代变迁!

    日前,iiMedia Research(艾媒咨询)发布《2023年中国协同办公行业及标杆案例研究报告》显示,今年协同办公OA市场规模预计达330.1亿元,平台功能全面性、定制化功能…

    科研百科 2023年12月2日
    149
  • 建设工程施工合同管理

    建设工程施工合同管理 建设工程施工合同管理是建筑工程项目管理中至关重要的一部分,其目的是确保建筑工程按照合同规定按时、按质、按量完成,同时保证工程的质量和进度。本文将从建设工程施工…

    科研百科 2024年6月5日
    96
  • 临矿集团古城煤矿官网

    临矿集团古城煤矿官网: 一个连接煤炭行业和现代社会的平台 临矿集团古城煤矿官网是临矿集团在古城煤矿领导下,为国内外煤炭行业用户提供的一个连接平台。作为中国最大的煤炭企业之一,临矿集…

    科研百科 2024年10月12日
    18
  • 首都师范大学博士联合培养项目

    首都师范大学博士联合培养项目 近年来,随着高等教育的不断发展,联合培养项目已经成为了一种流行的培养方式。作为一所全国著名的师范大学,首都师范大学也积极引进联合培养项目,旨在培养具有…

    科研百科 2024年12月1日
    4
  • 对计算机有想法的考生可选择这些专业,人才需求量大,就业前景佳

    每年高考季,考生和家长在填报专业的时候都会想一个问题,就是这个专业有没有前景,好不好就业?其实每个专业的设立都会有相应的需求,所以说要考虑一个专业的前景怎么样,就要考虑对口的行业未…

    科研百科 2024年4月13日
    80
  • 庐江书院新会联合办公室成立,六部尚书后裔获担任主任及政委(庐江书院介绍)

    庐江书院新会联合办公室成立, 六部尚书何熊祥后裔获担任主任及政委 庐江书院2021年秋祭大会现场,会长何金德宣布成立庐江书院文化研究会、广东省文化学会庐江书院文化研究专委会、何媒通…

    科研百科 2023年8月21日
    242
  • 项目图书管理系统

    项目图书管理系统是一种用于管理图书馆的软件系统,可以帮助图书馆管理员更好地管理图书馆的图书,并提供更好的服务。本文将介绍项目图书管理系统的基本概念、功能和优点。 一、项目图书管理系…

    科研百科 2024年12月28日
    0
  • 医学科研项目进展情况阶段性成果报告3130572737

    医学科研项目进展情况阶段性成果报告 随着科技的不断发展,医学领域也迎来了越来越多的研究进展。在 recent years, there has been a significant…

    科研百科 2024年11月22日
    0