Mac系统Android M源码编译并导入Android Studio查看

本文详细介绍了如何在Mac OS X 10.11.4系统上配置编译环境,包括创建大小写敏感的磁盘镜像、安装Xcode和MacPorts、下载和设置repo工具,以及编译Android源码。然后,通过编译idegen模块生成Android Studio配置文件,并指导如何导入源码工程,调整AS的JDK和SDK配置,解决源码跳转错误问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. Mac OS X(10.11.4)编译环境设置

1.1 创建大小写敏感的磁盘镜像

可以通过磁盘管理工具进行设置,也可以通过以下命令生成70g的镜像文件

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

1.2 将镜像文件转为可读写磁盘

hdiutil convert ~/android.dmg.sparseimage -format UDRW -o ~/android.dmg

(android.dmg.sparseimage 为创建的磁盘名,可能是android.dmg.sparseimage 或android.dmg ,根据实际情况填写)

1.3 双击android.dmg挂载磁盘

二、下载和编译的准备工作

2.1 Xcode是少不了的,没有安装的同学还是安装吧,我也是刚安装的。没安装的就安装个最新版的,这个直接在appStore下载。

2.2 安装MacPorts之前需要确认环境变量PATH中,/opt/local/bin出现在/usr/bin之前,可以运行一下这行来确认:

echo $PATH

否则,在.bash_profile文件种添加

PATH=/opt/local/bin:$PATH

特别说明:下面的一些知道step3的步骤我这边总出问题就跳过了,事实上也没影响后面源代码的下载,跳不跳过就取决与你了

从MacPorts安装make, git, and GPG packages:

POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg

如果你是Mac OS X 10.4版本的话,还要安装个bison

POSIXLY_CORRECT=1 sudo port install bison

下面要把gmake 3.82还原到3.81,否则之后编译源码会出错:(3.82有Bug,用不了):

sudo vim /opt/local/etc/macports/sources.conf

然后在rsync那行的上面一行加上

file:///Users/Shared/dport

之后按这个步骤来就行了:

mkdir /Users/Shared/dports
cd /Users/Shared/dports/
svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/devel/gmake/
portindex /Users/Shared/dports

安装3.81版的:

sudo port install gmake @3.81

检查一下gmake版本,看到版本号是3.81就对了:

gmake --version

于是最后下载Android源码前的最后一步就是,修改文件标识符限制:
由于Mac OS 默认将同时打开的文件标识符数量限制得太小,并行编译处理时可能会超出这个限制。所以在 ~/.bash_profile 里加上这么一段:

#set the number of open files to be 1024

ulimit -S -n 1024

三、开始下载android的源码了,开心啊

3.1 在你的home目录下创建文件夹 /bin

mkdir ~/bin

3.2 设置环境变量

PATH=~/bin:$PATH

3.3 下载repo工具并且给这个工具可执行权限

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

chmod a+x ~/bin/repo

3.4 下载源码

推荐使用清华大学TUNA镜像源,使用每月更新的初始化包进行下载更新。具体步骤请看

https://mirror.tuna.tsinghua.edu.cn/help/AOSP/

四.编译源码

4.1 在android.dmg磁盘下创建文件夹android用于存放源码:

cd /Volumes/android

mkdir android

4.2 将下载的源码拷贝到android文件夹中并进入源码目录

cd /Volumes/android/android/android-6.0.1/

4.3 设置环境

source build/envsetup.sh

4.4 根据设备选择target

lunch target

注:target有以下可选:

  1. aosp_arm-eng
  2. aosp_arm64-eng
  3. aosp_mips-eng
  4. aosp_mips64-eng
  5. aosp_x86-eng
  6. aosp_x86_64-eng
  7. aosp_deb-userdebug
  8. aosp_flo-userdebug
  9. full_fugu-userdebug
  10. aosp_fugu-userdebug
  11. mini_emulator_arm64-userdebug
  12. m_e_arm-userdebug
  13. mini_emulator_mips-userdebug
  14. mini_emulator_x86-userdebug
  15. mini_emulator_x86_64-userdebug
  16. aosp_flounder-userdebug
  17. aosp_angler-userdebug
  18. aosp_bullhead-userdebug
  19. aosp_hammerhead-userdebug
  20. aosp_hammerhead_fp-userdebug
  21. aosp_shamu-userdebug

其他设备可以到这里阅读

4.5 编译

make -j4

-jN,N这个数字可以跟你的CPU实际情况而定。

android目录底下会生成out文件夹,文件夹下:

4.6 错误解决

Which would you like? [aosp_arm-eng] 6
build/core/combo/mac_version.mk:38:          
*****************************************************
build/core/combo/mac_version.mk:39: * Can not find SDK 10.6 at  
/Developer/SDKs/MacOSX10.6.sdk
build/core/combo/mac_version.mk:40: 
*****************************************************
build/core/combo/mac_version.mk:41: *** Stop..  Stop.

** Don't have a product spec for: 'aosp_x86_64'
** Do you have the right repo manifest?

把文件中 build/core/combo/mac_version.mk:

mac_sdk_versions_supported := 10.6 10.7 10.8

修改为

mac_sdk_versions_supported := 10.11

(我的Xcode 是10.11,具体查看一下路径中的sdk版本
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/)

五.用android studio查看Android源码

5.1 编译源码idegen模块及生成AS配置文件(*.ipr)

mmm development/tools/idegen/

这行命令的意思是编译idegen这个模块项目,然后生成idegen.jar文件(不信你自己去查看这个模块的Android.mk的目标吧,不多解释)。运行完以后如果看到如下信息则说明编译OK:

#### make completed successfully (7 seconds) ####

接着执行如下脚本:

development/tools/idegen/idegen.sh

这行命令的意思是在根目录生成对应的android.ipr、android.iml IEDA工程配置文件。等待片刻得到类似如下信息说明OK:

Read excludes: 21ms
Traversed tree: 194799ms

通过如上操作我们就完成了基本的源码配置工作。

5.2 使用Android Studio导入源码工程

有了如上的这些操作以后,我们打开Android Studio,然后选择打开一个现有的Android Studio项目,然后选择打开源码根目录下的android.ipr文件,导入就行

5.3 加快AS读取源码速度

在打开android.ipr之后AS会花费一定的时间来读取源码,首次扫描源码中所有的Source Folders的时候花费的时间比较长,尤其源码存放在机械硬盘上的时候(完整扫描一次以后后续再打开就没这么慢了)。因为我们经常查看和编译的源码目录为packages和framework等,所以我们可以仅保留需要的源码文件夹不做设置,其他设为Excluded(请按需配置)。

在android根目录上安快捷键F4(如果已经设为Eclipse快捷键方式则为F12)打开Module Setting

选中不需要扫描的目录后点右上的Excluded(其中out和prebuilts目录较大,建议选择),完成以后效果如左侧,文件夹颜色区分,红色的即为排除在外的文件夹,AS将不扫描其中内容。 重新启动AS,会发现扫描源码目录的时间大大缩减了。

5.4 配置AS的JDK和SDK

在上一步操作之后的等待期间刚好让我们来配置一下JDK和SDK。

在IDE中参照下图Project Structure设置,先在SDKs设置中加入必须的JDK,SDK。(可选)然后创建一个新的JDK,可以取名为1.8(No Libraries),然后删除classpath标签页下面的jar文件。 这样可以确保使用Android源码里的库文件。

13:53:42.jpg

并将1.8(No Libraries)作为Android SDK要使用的Java SDK。如下图

13:54:55.jpg

之后在Project标签中的Project SDK中选择对应的Android API版本

13:55:10.jpg

5.5 解决源码中跳转错误问题

1)确保在上一步中已为当前工程设置正确了SDK和JDK

2)设置’Modules’的依赖

先将所有依赖删掉

点击上图中’+’并选择’Jars or directories’选项,依次将frameworks和external文件夹添加进来.如:

13:55:25.jpg

如果代码跳转错误,请仿照上面的步骤将相应代码的路径或jar文件添加到其Dependencies标签页中即可。

感觉以下文章作者:

http://www.jianshu.com/p/9cbdc475dff6
http://www.cnblogs.com/xyz123753/p/3322453.html
https://liuzhichao.com/2016/osx-download-and-build-android-source.html
https://mirror.tuna.tsinghua.edu.cn/help/AOSP/
http://blog.youkuaiyun.com/yanbober/article/details/48846331

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值