不飞则已,一飞冲天;不鸣则已,一鸣惊人。这篇文章主要讲述Mac系统下编译Android系统源代码相关的知识,希望能为你提供帮助。
前言我们知道,android OS是基于Linux内核的移动操作系统,主要分成了
- Application
- ApplicationFramework(java)
- System Libraries(Native C/C++)/Android Runtime
- HAL(Hardware Abstraction Layer)
- Linux Kernel
作为一个Android Developer,熟练使用Android系统API是必不可少的(Application),但是在进阶的道路上,揭开API的『面具』,直面API背后的Android FW/Linux Kernel同样是一条必经之路。
今天就介绍一下,如何在Mac OSX上进行Android系统源代码的编译。
正文AOSP 是Google领导的Android系统开源项目,旨在为开发者创建定制的Android堆栈版本提供源代码以及相关信息。AOSP的相关简介可以在这里查看。
下面就分步进行Android系统源码的编译:
1. 创建区分大小写的磁盘映像AOSP项目使用git进行版本控制,mac默认的磁盘对大小写是非敏感的,在这类文件系统中,可能导致git的一些命令失效(比如:git status),因此需要创建出一个Case-sensitive的磁盘映像来存储AOSP项目代码。
- 创建磁盘空间:
hdiutil create -type SPARSE -fs ‘Case-sensitive Journaled HFS+‘ -size 40g ~/android.dmg
执行完成后,会在用户根目录(命令行cd ~)创建出一个未挂载的磁盘映像android.dmg(也可能是android.dmg.sparseimage)
- 调整磁盘大小:
创建完成后,可对磁盘空间的大小进行调整
hdiutil resize -size < new-size-you-want> g ~/android.dmg.sparseimage
双击用户目录的android.dmg.sparseimage即可挂载磁盘空间。
2. 安装JDK需注意,AOSP项目必须基于Open JDK的版本。
- 对于5.0.x的Android版本,需要下载安装JDK7
- 对于4.4及以下的版本,需要安装JDK6
- 对于master分支或者6.0+的版本,安装最新的JDK版本
- 从App store下载xcode安装,完成后执行
$ xcode-select --install
Note:这里最好再运行一下
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
以防后面的步骤出现warning:
Warning: Xcode appears to be installed but xcodebuild is unusable; some ports will likely fail to build.
- 根据自己的系统来选择
MacPorts的下载地址
- 编辑.bash_profile文件(如果没有此文件,vi会自动创建)
vi ~/.bash_profile
- 复制
export PATH=/opt/local/bin:$PATH
到.bash_profile文件中。
- 激活MacPorts命令:
source ~/.bash_profile
POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
同时,由于mac中允许同时打开的文件描述符数较低,复制以下文本至.bash_profile文件中:
ulimit -S -n 1024
6. 下载源代码可以参阅 [官方教程]
- 确保主目录下有一个
bin/
目录,在.bash_profile中添加:
mkdir ~/bin PATH=~/bin:$PAT
激活:
source ~/.bash_profile
- 下载repo
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
关于repo的介绍,看这里。
- 初始化repo
挂载的磁盘目录一般在/Volumes文件夹下,cd /Volumes
进去后,找到挂载的磁盘名,cd进入磁盘目录后:
repo init -u https://android.googlesource.com/platform/manifest
- 开始下载源码
repo sync
Note:这里下载的为AOSP master分支的代码,也就是当前最新的Android版本。如需repo特定分支,请使用:
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
你可以从这里查看源代码的各版本分支。
如需使用本地镜像或者需要验证git,请参阅官方教程。
- 设置环境
source build/envsetup.sh
- cd到源代码目录后:
make -j17
GNU Make 可以借助 -jN 参数处理并行任务,通常使用的任务数 N 介于编译时所用计算机上硬件线程数的 1-2 倍之间。
8. 在AndroidStudio中查看源码关于AndroidStuido的下载以及介绍,请移步 Android Studio官方网站。
- 编译完成后,cd到源代码目录,如
/Volumes/android/source
,执行:
mmm development/tools/idegen/
- idegen完成后,执行:
sh ./development/tools/idegen/idegen.sh
- 以上两步完成以后,打开AndroidStudio ->
File ->
Open ->
源代码目录 ->
android.ipr,即可在AndroidStuido中查看Android源代码。
整个过程并没有很复杂,最难以应对的就是mac昂贵的硬盘空间了,256G的HD结结实实折腾了几次才最终编译完成。
【Mac系统下编译Android系统源代码】遇到问题多看官方文档才是最正确的姿势。
推荐阅读
- EasyRTMP实现内网摄像头RTSP拉流转码RTMP推流到RTMP服务器EasyRTMP-Android视频采集流程是什么()
- RTSP播放器网页web无插件直播流媒体音视频播放器EasyPlayer-RTSP-Android解码获取视频帧的方法
- Android Studio报错问题集锦
- Android Studio 之 ROM, LiveData+ViewModel+AsyncTask+Repository
- AppBarLayout折叠时候的阴影
- Android 在Service中弹出对话框
- Java Applet基础——输出HelloWorld
- 把app(apk和ipa文件)安装包放在服务器上供用户下方法
- DApp是什么,DApp是必然趋势