Mac 系统下Android 源码的下载与编译

Mac 系统下Android 源码的下载与编译

我的环境:

  • 系统版本:MAC OS X EI Capitan 10.11.6
  • 处理器 : Intel Core i7
  • 内存 : 16 GB ;500G 闪存
  • JDK : 1.8.0_91
  • Xcode : Version 8.2.1 (8C1002)

Mac 下载源码的一般步骤:

  • 创建一个大小写敏感的磁盘镜像;因为源码只能在大小写敏感的磁盘上编译
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 60g ~/android.dmg.sparsefile

其中的android.dmg.sparsefile是自定义的,可以修改。这里给磁盘分配了60G,如果你下载版本较老的源码是没有问题的,我下的是 7.0 的系统,有些大,下载编译完后磁盘镜像达到了90.37G,所以这里要注意一下;但是你已经创建好了,但又突然发现不够用了,那我们可以通过以下的命令给镜像重新设置大小;注意镜像都有个后缀:"sparseimage",如果建议加上后缀名。

hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparsefile.sparseimage
  • 加载分区
hdiutil attach ~/android.dmg.sparsefile.sparseimage -mountpoint /Volumes/android
  • 下载repo
    repo是一种工具,建立在Git上。repo可以管理许多Git存储库,并上传版本控制系统,处理Android开发工作流程的自动化部分。repo其实一个Python写的脚本,我们需要下载的就是一个Python写的脚本文件。这里最好回到你当前用户的根目录,执行以下命令

    mkdir ~/bin # 创建文件夹
    PATH=~/bin:$PATH #设置环境变量
    curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo #下载repro 到/bin/repo文件里
    chmod a+x ~/bin/repo # 给repo 文件权限

    如果上面的https://storage.googleapis.com/git-repo-downloads/repo连接有问题可以使用这个地址代替https://mirrors.tuna.tsinghua.edu.cn/git/git-repo

    去当前目录下找到 bin/repo 文件,打开,大概在第8行左右,将

    REPO_URL = 'https://gerrit.googlesource.com/git-repo'

    替换成

    REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'

    为什么这样干,大家大概都知道为什么;googlesource国内网络访问比较麻烦,这里把它替换成清华大学提供的镜像

  • 修改文件描述符限制

    Mac 系统下默认只能同时打开 1024 个文件,而在进行Android源码编译时有可能会超出这个限制,因此需要解除这个限制在~/.bash_profile中添加以下内容:

    
    # set the number of open files to be 1024 
    
    ulimit -S -n 1024   
  • 进入到分区,就上面的 /Volumes/android

    cd /Volumes/android/
    mkdir android-source 
    cd android-source
  • 开始下载

    repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b 你想下载的版本分支

    如果需要某个特定的 Android 版本,可以参看这个地址,这里有很多版本分支,找一个你顺眼的下载吧,下面提供部分版本分支图:

如果init正常,就可以执行下面的命令同步代码了;如果有问题多执行几次看看。这个过程很慢,当然也要看你的网速。一般都要几个小时吧。

repo sync 

如果下载完毕之后,你会看到类似的内容:
这里写图片描述

  • 安装 MacPort ,如果你安装了可以略过了

    安装完毕之后,会在你电脑的根目录有个opt文件夹。一般它会给你设置好环境变量,如果没有你就需要手动设置了

  • 通过MacPort安装make,git,GPG, 如果本地已经安装,或者版本已经比较新了,无需安装

   POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
  • 编译

    下载完毕之后就要编译了,进入到我们下载的源码的目录

   cd /Volumes/android/android-source 
   source build/envsetup.sh #初始化编译环境
   lunch full-eng #选择编译目标
   make # 或者 make -j4

如果成功了你会看到类似以下的内容:

  • 编译遇到的问题

    1. Mac SDK 不支持的情况,因我这里都是最新更新的Xcode ,使用的 是SDK12 ,但是它支持的最高是11,最后找同事拷贝一份才好。
      1. Android 7.1的源码是使用了jack-server,它在用户目录下生成了一个 .jack_setting文件;在编译时,竟然没有读写权限,害的我又重新给它设置权限后,又重新编译的。
      2. 可能还有其它的问题,大家遇到了就自己百度Google一下就好了。
  • 使用的AndroidStudio阅读源码

    1. 上面编译成功后,在 /Volumes/android/android-source 目录下执行

      mmm development/tools/idegen/
    2. 稍等执行完毕之后,再执行下面的命令

      sh ./development/tools/idegen/idegen.sh
    3. 最后打开AndroidStudio
      File–>Open–>找到源码目录下的android.ipr文件
      最后的图如下:
  • 在模拟器上运行

最后你也可以到模拟器上看看运行效果
到目录/Volumes/android/android-source/out/target/product/generic 下执行下面的命令:

emulator -image system.img -data userdata.img -ramdisk ramdisk.img 

或者直接执行 emulator也行,
如果出现,
emulator: WARNING: system partition size adjusted to match image file
执行以下下面这个命令:

emulator -partition-size 1024

就OK了。
最后上几张运行的截图:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值