Mac下设置Android源代码编译环境

简介:

在Mac下编译Android最麻烦的就是设置Android的编译环境了,做完这一步基本上剩下的就是近乎傻瓜式的操作了.说起来也简单就三步,设置大小写敏感的文件系统、安装编译工具、设置文件系统同时能打开的数量.

默认情况下,Mac OS运行在不区分大小写的文件系统上,git对这类型的文件系统支持不太好,有可能会导致git命令运行出错(比如git status)。因此,我们推荐在一个区分大小写的文件系统中,做与AOSP相关的操作。这很容易就可以用磁盘映像(disk image)做到,下面会讨论到.

一旦我们有了合适的文件系统,在Mac系统上编译master就变得非常简单、直接了。早起的分支,比如ICS,需要一些额外的工具.

创建大小写敏感的磁盘映像

为了创建一个大小写敏感的分区,我们可以使用带GUI界面的磁盘工具(Mac自带)或者使用命令行创建。根据我的经验,下载Android 6.0的代码大约需要50GB,编译后能膨胀到72GB。当然,如果磁盘空间紧张,下载源代码后,你可以手动将源码根目录下面的.repo目录删除,这样大约可以节省25GB的空间.

使用磁盘工具创建的步骤:

  1. 选择"新建映像(new Image)"
  2. 格式那里选择Mac Os扩展(区分大小写,日志式),大小至少选择50GB.

使用命令行创建

  1. 创建磁盘空间

    hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg

    这会创建一个.dmg(或者也与可能是一个.dmg.sparseimage)文件,一旦挂载上,就是一个Android开发所需要的文件系统格式的磁盘.

如果你需要调整磁盘空间的大小,可以使用下面的命令:

  1. 调整磁盘空间的大小

    hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

android.dmg(android.dmg.sparseimage)会保存在home(~)目录下,你可以在~/.bash_profile添加帮助函数:

使用mountAndroid来挂载映像:

# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }

使用 umountAndroid取消挂载:

# unmount the android file image
function umountAndroid() { hdiutil detach /Volumes/android; }

完成后,就可以看见在/Volumes/中挂载了一个叫android的磁盘。

安装JDK

Android开源项目(AOSP)的master分支需要java 8.在Mac系统上使用jdk 8u45 或者更新的版本.

5.0.x的分支需要Java 7.在Mac上,使用 use jdk-7u71-macosx-x64.dmg

开发从版本Gingerbread(Android 2.3)到KitKat(Android 4.4)需要使用Java 6

安装需要的包

从Apple的开发者网站下载XCode。推荐使用3.1.4或者更新(比如gcc 4.2)版本4.X可能会导致一些问题.
对于我而言,我安装了最新的Xcode(7.2版本,SDK 版本MacOSX10.11),但是由于不是Android官方推荐的版本,在编译前还需要作一些修改,具体的后面会介绍.
从 macports.org安装MacPorts.
注意:要确保/opt/local/bin 在path中排在/usr/bin之前.如果没有添加下面的东西到~/.bash_profile文件中.如果没有~/.bash_profile文件,那么就创建一个

export PATH=/opt/local/bin:$PATH

从MacPorts获取make, git, and GPG packages :

$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

如果使用 Mac OS X v10.4, 还需要安装 bison:

$ POSIXLY_CORRECT=1 sudo port install bison

设置文件同时打开数量

在Mac中,默认的文件同时打开数实在太低,一个高速并行的编译进程运行时可能会遇到瓶颈。(注:Mac上限制最大打开文件数的原因是每打开一个文件,系统都需要内存来管理它们,内存是有限的资源)
为了增加最大文件打开数量,在~/.bash_profile中添加:

# 设置文件打开数量为1024
ulimit -S -n 1024

接下来,就可以下载Android的源代码了.剩下的就只是需要耐心了.

本文转自陈哈哈博客园博客,原文链接http://www.cnblogs.com/kissazi2/p/5244442.html如需转载请自行联系原作者


kissazi2

相关文章
|
1天前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
14 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
5月前
|
IDE Android开发 iOS开发
深入解析Android与iOS的系统架构及开发环境差异
本文旨在探讨Android和iOS两大主流移动操作系统在系统架构、开发环境和用户体验方面的显著差异。通过对比分析,我们将揭示这两种系统在设计理念、技术实现以及市场策略上的不同路径,帮助开发者更好地理解其特点,从而做出更合适的开发决策。
274 2
|
4月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
145 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
4月前
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
4月前
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
4月前
|
安全 Android开发 数据安全/隐私保护
探索安卓与iOS的安全性对比:哪个更适合企业环境?
在数字化时代,移动设备已成为企业日常运营不可或缺的一部分。选择合适的操作系统对于保障企业数据安全至关重要。本文深入分析了Android和iOS两大主流操作系统的安全性,从系统架构、安全功能、应用生态及更新频率四个维度进行全面比较,旨在为企业提供一个清晰的决策依据,帮助企业在Android的开放性与iOS的封闭性之间找到最适合自身需求的平衡点。
85 6
|
5月前
|
Dart 开发工具 Android开发
在 Android 系统上搭建 Flutter 环境的具体步骤是什么?
在 Android 系统上搭建 Flutter 环境的具体步骤是什么?
|
4月前
|
PyTorch TensorFlow 算法框架/工具
手把手教你-MAC笔记本安装Pytorch环境
手把手教你-MAC笔记本安装Pytorch环境
192 0
|
4月前
|
Linux C语言 iOS开发
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
74 0
|
XML 编解码 JavaScript
【HarmonyOS 专题】01 基础 Mac 环境安装配置
0 基础学习 HarmonyOS,第一步:Mac 环境安装配置!
358 0
【HarmonyOS 专题】01 基础 Mac 环境安装配置

热门文章

最新文章

  • 1
    mac git clone命令提示git@gitee.com: Permission denied (publickey).问题修复
  • 2
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 3
    Android历史版本与APK文件结构
  • 4
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 5
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 6
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 7
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 8
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 9
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 10
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    14
  • 2
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    28
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    34
  • 4
    Android历史版本与APK文件结构
    121
  • 5
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 6
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 7
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    60
  • 8
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    37
  • 9
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    73
  • 10
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    121
  • 推荐镜像

    更多