在MAC上下载和编译android源码


  一.  环境搭建.
        因为MAC是大小写不敏感的操作系统,很多Linux命令不支持,所以首先要创建大小写敏感的操作系统。

          
  打开磁盘工具,文件,新建映像,如图所示。 
这里写图片描述


之后在设定的位置处就能看见创建的磁盘了,双击磁盘映像,就可以在侧边栏看见磁盘。


2. 安装make,git,GPG
             (1) 首先要安装macport,可以进官网看 安装指南 ,也可以直接安装上面给的安装包,也可以直接下 macport ,解压,输入cd,将目录拖入命令行, 然后输入以下命令

  •             cd MacPorts-2.3.4/
  •             ./configure
  •             make
  •             sudo make install
(2) 打开终端,输入如下命令
POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

3.修改Mac默认的最大可同时打开文件数

在~/.bash_profile中增加以下语句,让同时打开文件数增加到1024.​

ulimit -S -n 1024


4. 下载Mac xcode 开发工具,用最新版吧。

5.配置java环境
jdk1.6下载 
jdk1.7下载 
jdk1.8下载 

在~/.bash_profile文件中配置java环境中增加以下语句

vim编辑器里面的内容如下:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home

CLASSPAHT=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

PATH=$JAVA_HOME/bin:$PATH:

export JAVA_HOME

export CLASSPATH

export PATH



二、下载android 源码。

Android系统源码,同步官方无任何改动

为了减小源码包体积,删掉了.repo文件夹,对编译无影响.采用7z高比率压缩

下载地址(长期有效):

http://pan.baidu.com/s/1ngsZs


三.源码编译

    
    
  1. 终端输入source build/envsetup.sh
  2.  设置编译目标lunch aosp_arm-eng
  3. 开始编译make -j8make -j4make -j16,取决于你的CPU的线程数。
  4. 如果一切顺利的化,在几个小时之后,便可以编译完成.看到### make completed successfully (01:18:45(hh:mm:ss)) ###表示你编译成功了.

四、运行模拟器

1.在编译完成之后,就可以通过以下命令运行Android虚拟机了,命令如下:

      
      
  • source build/envsetup.sh
  • lunch(选择刚才你设置的目标版本,比如这里了我选择的是1)
  • emulator

2.如果你是在编译完后立刻运行虚拟机,由于我们之前已经执行过source及lunch命令了,因此现在你只需要执行命令就可以运行虚拟机:

 emulator





五、源码编译问题。

1. 在经过漫长的时间后,笔者终于把android源码下载下来。在编译前,请确保你的上述环境都搭建完成。执行“ make clobber”检测全局环境是否搭建完成。如果为搭建完成,会给出相应的提示。否则会出现以下的错误:
异常1:build/core/config.mk:600: Error: could not find jdk tools.jar at /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/../lib/tools.jar, please check if your JDK was installed correctly. Stop.<br/>
原因:系统没有找到可对应的jdk版本。
异常2:
Checking build tools versions…
build/core/main.mk:117: *

build/core/main.mk:118: You are building on a case-insensitive filesystem.
build/core/main.mk:119: Please move your source tree to a case-sensitive filesystem.
build/core/main.mk:120: **
build/core/main.mk:121: * Case-insensitive filesystems not supported. Stop.<br/>
原因:makefile无法找到Mac osx扩展(区分大小写)的分区。

2.报错 Unsupported curl, please use a curl not based on SecureTransport

无法启动 Jack server,完整报错信息:

FAILED: /bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar  2>&1 || (exit 0) ) && (JACK_SERVER_VM_ARGUMENTS=\"-Dfile.encoding=UTF-8 -XX:+TieredCompilation\" prebuilts/sdk/tools/jack-admin start-server 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update server prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar 4.8.ALPHA 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-2.28.RELEASE.jar 2.28.RELEASE || exit 47; prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-3.36.CANDIDATE.jar 3.36.CANDIDATE || exit 47; prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-4.7.BETA.jar 4.7.BETA || exit 47 )"
Unsupported curl, please use a curl not based on SecureTransport
Jack server installation not found
Unsupported curl, please use a curl not based on SecureTransport
Unsupported curl, please use a curl not based on SecureTransport

这是因为 cURL 版本和 Jack 工具链不兼容,在 这里 找到解决办法,brew install curl --with-openssl 来重新安装一个基于 OpenSSL 的 cURL,并修改环境变量以覆盖系统自带的版本:export PATH=$(brew --prefix curl)/bin:$PATH




3.内存溢出

Try increasing heap size with java option '-Xmx<size>'.
      
      
  • 1
  • 1

修改Jack的配置文件prebuilts/sdk/tools/jack-admin,将

JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"
      
      
  • 1
  • 1

修改为

JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"
      
      
  • 1
  • 1

然后在终端输入

./prebuilts/sdk/tools/jack-admin stop-server
      
      
  • 1
  • 1

重新编译时会重新启动jack server。

继续编译make -j8。


4. 其它关于 Jack server 的错误

具体错误信息没有记下来,总之有时候会因为其它原因 Jack server 启动不了,一种可能性是因为已存在 ~/.jack-server,把它删掉,并运行 jack-admin kill-server 杀掉进程(如果它确实在运行的话)。


5.磁盘空间不够

官网说 25GB 就够了,但其实远远不够,建议分 100GB。













Logo

更多推荐