您的位置:首页 > 移动开发 > Android开发

Macbook Pro下载并编译Android源码并导入Android Studio

2016-11-22 09:52 721 查看
  最近尝试下载并编译Android的源码,过程比较曲折,所以特别的记录一下。

  环境

  mac系统:OS X EI Captian 10.11.6

  Android源码:Android 7.0

  JDK: jdk 1.8.0_77

  

  下载源码

  step1:因为我的mac硬盘空间比较小,所以我直接在移动硬盘上操作的,如果mac的空间够大也可以在内置硬盘操作。由于mac文件系统模式默认是不区分大小写的,但是AOSP托管在git上是区分大小写的,所以这里我们需要创建一个镜像。具体操作如下:

  方法一:使用命令行(AOSP目前比较大,建议至少预留80G+的空间):

  

hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 80g /Volumes/aosp/android.dmg


  生成镜像的位置是可以自己定义的,我这里是放在了移动硬盘中。如果需要更大的磁盘空间,可以用下面的命令行来改变磁盘镜像的大小:

hdiutil resize -size <new-size-you-want>g /Volumes/aosp/android.dmg


  方法二:使用mac自带的磁盘工具,选择New Image,分配至少80G大小的空间;保证选择格式为OSX 扩展(区分大小写,日志式)的卷。一定要选区分大小写,日志式

  


  

  这时在/Volumes/aosp/下会生成一个android.dmg的镜像,双击这个镜像,将其挂载。这样在mac Finder中就可以看到我们刚刚的创建的镜像了。

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

# set the number of open files to be 1024
ulimit -S -n 1024


  Step3 安装repo及同步AOSP源码

  

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo


  由于众所周知的原因,我们如果直接使用官方下载会非常的困难,那么我们可以考虑使用国内的源,比较好用的就是清华镜像。按照清华源的步骤去同步就可以了:

  

cd  /Volumes/aosp/ #将当前路径切换到刚刚挂载的的镜像中
wget https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar
cd AOSP
repo sync # 正常同步一遍即可得到完整目录


  如果repo没有配置环境变量,那么需要把repo的绝对路径加上,例如刚刚把repo下载到~/bin下了,那么在同步时应该是~/bin/repo sync。安静的等待源码下载同步完成。

  编译源码

  step1 在源码的当前路径下:

  

$ source build/envsetup.sh


  如果不出意外会得到以下结果:

  


  step2:接下来就是根据设备选择target

  


  我这里选择的是5 aosp_x86-eng。每个选项对应的device可以在这里查看 如果打不开,我截了张图,大家可以根据自己的情况选择

 


  选择好target后就可以直接进行编译了

  不过在这之前你可能还需要下载驱动(如果只是想查看源码也可以忽略该步)

将下载下来的文件解压到源码的根目录会得到三个.sh的文件,依次运行三个文件,例如:

$ ./extract-broadcom-hammerhead.sh

The license for this software will now be displayed.
You must agree to this license before using this software.

Press Enter to view the licensels


回车后查看license,翻到license最后,输入I ACCEPT后回车,这时会将驱动文件释放到vendor目录。

  step3:

 

$ make -j8


  使用make构建,该命令可以通过使用-jN参数来处理并行任务。此处的N,根据所用的计算机的硬件的核数来指定,一般N指定为CPU核心的1到2倍。接下来就是漫长的编译过程,具体编译时长得看机器的情况了。并且有可能出现各种问题,这个时候不要着急,可以根据错误日志搜索,一般都能找到解决办法。解决之后,在接着运行上边的make 命令就好,会继续在你中断的地方开始编译。

  最后如果出现:

  

make completed successfully


  那么恭喜你,编译成功了,因为我这里选择的是模拟器的,所以可以通过

$ emulator


  直接启动,刚刚编译的系统。(如果没有下载驱动,可能会卡在启动页面。)

  导入Android Studio

  在编译玩Android源码后,我们继续编译生成Android studio工程:

soruce build/envsetup.sh
mmm development/tools/idegen/
sudo ./development/tools/idegen/idegen.sh


  其中mmm development/tools/idegen/执行完成后会生成idegen.jar,而sudo ./development/tools/idegen/idegen.sh则会在源码目录下生成IEDA工程配置文件:android.ipr,android.iml及android.iws.这三个文件

  android.ipr:通常是保存工程相关的设置,比如编译器配置,入口,相关的库等

  android.iml:则是主要是描述了modules,比如modules的路径,依赖关系等.

  android.iws:则主要是包含了一些个人工作区的设置.

  接下来,打开Android Studio,点击File->Open,选择刚才生成的android.ipr文件即可,然后就是漫长的等待,注意此时是将源码完全导入到AS中了,不出意外,你会觉得AS运行会卡顿。还需要我们忽略掉一些不经常使用的包。

  在Android Studio导入成功之后,项目结构如下:

  


  红色的表示已经被忽略了,没有导入,那么也可以通过以下方法来对指定的包进行修改是否导入:

  


  

  也可以直接在project Structure中进行修改:

  


  在修改完后,我们可以在android.iml可以看到,我们忽略导入了那些包:

  


  如果熟悉了包的结构,就可以直接在该文件中,完成忽略导入的操作,是最快捷的方式。

  这样我们就可以使用Android Studio阅读源码了,在源码阅读过程中可能会出现跳转到SDK对应的方法中的问题,这个时候,需要先配置一下SDK,然后修改项目依赖就可以了。到这儿,就可以越快的撸源码了。Good Luck
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android studio 源码