MacOS 10.15 下 Android Q 源码 下载 编译 详解

      最近换了台新的 MacBook Pro 之前没有在MacOS 下下载过编译过Android 源码,这次准备试一试,同时记录下遇到的问题。

考虑到很多人是为了深入学习Android 的源码才来看这个文章都是新手上车,所以我准备从准备工作图文 一步步详细解释。

准备工作

     1. 硬盘空间,至少150G 建议搞个200G 或者更大 毕竟空间多了没事。少了就难受了。(下载完大概60G源码不包含.repo/文件夹 我编译了一个 x86版本后是 130G 左右,这里我还是删除了 .repo 文件的情况下,你可能还喜欢多编译几个版本也不一定)本地磁盘不够 只能外接移动一盘了。

     2.好用的梯子。(好用的梯子记得分享,我用的Veee 平时看个网站还行,下载文件500M宽带下载起来 100kb)

创建磁盘映像

     1 找到电脑里的磁盘工具打开

      

   2. 打开之后 桌面顶部工具栏   文件 ->新建窗口-> 空白映像 

            

     这里要注意划红线的部分 特别是 格式不能错哦。创建好之后我们下载安装Repo 

下载安装Repo

     https://source.android.com/setup/build/downloading

     这个网页有详细步骤,我当下搬运工

     1.打开终端,输入以下的命令,创建bin文件夹,并加入到临时环境变量中:

   mkdir ~/bin       //创建bin文件夹
   PATH=~/bin:$PATH  //将该文件夹路径加到临时环境变量中

     2.下载 Repo 启动器,并确保它可执行

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

    3.(可选)验证启动器与我们的签名是否匹配:

    gpg --recv-key 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65
    curl https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ~/bin/repo
    

   初始化 Repo 客户端

   1.创建一个空目录来存放您的工作文件。如果您使用的是 MacOS,必须在区分大小写的文件系统中创建该目录。这一步先cd 到你创建的映像文件下

    cd /Volumes/ASOP  //cd 到创建的ASOP
    mkdir WORKING_DIRECTORY //创建一个文件夹
    cd WORKING_DIRECTORY //进入到这个文件夹下
    

  2.使用您的真实姓名和电子邮件地址配置 Git。要使用 Gerrit 代码审核工具,您需要一个与已注册的 Google 帐号相关联的电子邮件地址。确保这是您可以用来接收邮件的有效地址。您在此处提供的姓名将显示在您提交的代码的提供方信息中。(这里我用的Google的gmail 邮箱。其他邮箱我没有尝试)    

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

 3.运行 repo init 以获取最新版本的 Repo 及其最新的问题修复。您必须为清单指定一个网址,该清单用于指定 Android 源代码中包含的各个代码库将位于工作目录中的什么位置。

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

这里 manifest 是默认拉的主分支也就是Google一直在更新的分支。还有很多其他分支 查看分支

查看可切换的分支 
cd .repo/manifests 
git branch -a | cut -d / -f 3 

这里有很多Release稳定版本。我使用的是 android-10.0.0_r33 这个版本

切换到10.0分支
repo init -b  android-10.0.0_r33

这里是成功拉取分支的显示

接下去就是下载 使用repo sync来同步源码,

repo sync

这里耗时很长要翻墙 网速非常慢,时间我是不会告诉你们的。反正很久很久。

在这个过程中会报错好几次 各种出错,不要慌 出错了就  repo sync 重新来,反正会检查已经下载好的内容不会重复下载。

经过漫长的等待(记得去睡觉电脑开着就行,不要天真的等在电脑前以为可以看着他下载完)

看到finished successfully 。很开心 终于下载完了。接下去就是要编译源码了

报错

这里repo 会有一些问题

1. repo init 时

解决 :网络代理设置一下,找到网络偏好设置里的代理 看一下网络代理服务器IP 端口

然后

git config --global http.proxy "127.0.0.1:15236"//每个人端口应该不一样

2.第二个是这个问题 找到这个文件加一行代码 就能解决。

.

源码编译

cd /Volumes/ASOP/WORKING_DIRECTORY
source ./build/envsetup.sh
lunch

这三行代码上去我们看到所有可以编译的版本

这里我选择了23. aosp_x86-eng 首先我们肯定是需要 -eng 版本的 因为我们要debug 的 另外 电脑CPU 是 x86 架构的,X86模拟器打开速度很快,选择 arm 的兄弟,边吃饭边等吧。

Buildtype用途
user有限的权限;适合一般用户
userdebug类似user模式,但有root权限和debug能力,适合debug
eng带有额外的debug工具的开发配置。

所以我们选择 

lunch 23

这里可能之前 先 lunch 了默认 是第一个 会问你 Which would you like? [aosp_arm-eng] 回车之后再lunch 23 

然后 执行

make -j10

使用make -jx 来编译源码(x一般取你的cpu核心数*2+2) 我这里是6核的CPU 我还是选择了 10 反正CPU性能是死的估计选再大也没用。

报错

 1.这里如果和我一样新的电脑装的都是 10.15 的系统,会报错。

Could not find a supported mac sdk: ["10.10" "10.11" "10.12" "10.13" "10.14"]

vim build/soong/cc/config/x86_darwin_host.go

然后找到

darwinSupportedSdkVersions = []string{
                 "10.10",
                 "10.11",
                 "10.12",
                 "10.13",
                 "10.14",
         }

光标移到10.14 末尾 按 i (insert)加入 "10.15", 然后esc 光标 移到 文件末尾 按大写的  ZZ   就可以保存退出

2. 第二个报错是编译过程中

找到我们源码 system/sepolicy/tests/文件夹下的 Android.bp 文件

删除红色的一行 保存退出 然后重新编译

最后编译成功显示

build completed successfully

表示编译成功,我们可以启动模拟器了

source build/envsetup.sh 
lunch
emulator 

总结

   基本上Mac  下 Android 源码的下载和编译 就是这样的一个过程 如果编译完一个版本后想重新编译一个,可以使用 

 make clobber   

   命令。可以清除之前编译生成的文件。我们编译产生的文件都在 out文件夹下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值