最近换了台新的 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_DIRECTORYsource ./build/envsetup.shlunch

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

这里我选择了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 lunchemulator 

 

总结

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

 make clobber   

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

更多相关文章

  1. Android中使用javah生成jni头文件的正确方法
  2. android 7.0 兼容多语言切换总结
  3. 基于Bmob的Android即时通讯应用源码解析
  4. Android(安卓)Q(10.0)版本新特性以及兼容性适配
  5. Android使用Ant多渠道打包
  6. android安全学习之2—android中.pem和.pk8是什么文件?
  7. Journey of Android(安卓)for Mac
  8. android实现连连看,附源码
  9. Android笔记(一):Android工程目录介绍

随机推荐

  1. 安卓boot recovery解包打包
  2. android 适配
  3. Android中基于NuPlayer的RTSP框架学习
  4. AIDL实现进程间通信
  5. Android Power Management 实现
  6. 转:android ro.debuggable属性调试修改(mp
  7. Android初级程序员需要掌握的知识
  8. Android 开发模式:mvp+retrofit2+rxjava +
  9. Android中WebView的使用指南:
  10. android View绘制流程与机制