苹果电脑能编译 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月29日
    30
  • 我们不确定发生了什么 0x80072f8f-0x20000

    我们不确定发生了什么 0x80072f8f-0x20000 最近,我们的团队在处理一个任务时遇到了一个奇怪的问题。每当我们尝试执行这个任务时,程序都会崩溃并显示一个0x80072f…

    科研百科 2024年9月30日
    24
  • 2023上半年信息系统项目管理师 案例分析真题+答案

    为方便考生估分自测,科科过为您整理了2023上半年信息系统项目管理师案例分析真题 答案,以下为具体内容: 试题一(25分):看下列说明,回答问题1至问题4,将解答填入答题纸的对应栏…

    科研百科 2024年4月24日
    102
  • 传统项目管理模式如何向敏捷开发和精益项目管理转型(传统项目与敏捷项目)

    随着科技的快速发展,企业面临着越来越激烈的竞争。为了在市场中保持竞争力,许多公司开始转向敏捷开发和精益项目管理。这两种方法都强调快速响应变化、持续改进和以客户为中心。然而,从传统的…

    科研百科 2024年4月24日
    88
  • 护理CIP项目案例

    CIP项目案例:护理团队成功完成患者清洁消毒工作 在卫生消毒领域,清洁消毒 (Cleaning and 消毒) 是一项非常重要的任务。由于许多患者的疾病和接触史,他们需要经常接受清…

    科研百科 2025年1月4日
    4
  • 储能项目电池管理系统

    储能项目电池管理系统 储能项目是现代社会中非常重要的一个领域,它涉及到了能源的储存和利用。储能项目可以使用各种类型的电池,例如锂离子电池、钠离子电池和锌空气电池等,这些电池具有不同…

    科研百科 2025年1月16日
    0
  • 产品简介系列 – 安讯智服科技 X-GDS 气体监测系统(安讯智能科技有限公司)

    X-GDS 气体监测系统 X-GDS 系统架构示意 系统架构设计简洁,仅顶层设备、设备监控、控制设备、感知层等四个部分,整个系统操作简单易上手。 X-GDS 气体监测系统 安讯智服…

    科研百科 2023年8月26日
    722
  • 护理科研项目大全最新

    护理科研项目大全最新 随着科技的不断进步,护理科研项目也在不断更新和发展。最新的护理科研项目涵盖了许多最新的技术和方法,可以帮助护士更好地护理患者。 最新的护理科研项目之一是“生物…

    科研百科 2025年4月29日
    1
  • 珠海企业项目管理系统

    珠海企业项目管理系统 珠海是一个美丽的城市,拥有独特的地理位置和良好的气候条件,一直是国内外投资者的热门选择。然而,随着市场竞争的加剧,企业需要更好地管理项目,以确保项目的高效和高…

    科研百科 2024年12月13日
    0
  • 一建管理超简单!必刷100题搭配龙炎飞133个表格,不翻书直揽88分

    在一建备考基础阶段,学完一定要做题查漏补缺,对重点考点反复记忆,才能牢牢把握得分点,基础打牢后期冲刺事半功倍! 今天分享一建《管理》必刷100题,根据历年真题编写,涵盖95%以上考…

    科研百科 2022年5月23日
    2.1K