在MAC上下载和编译android源码
在MAC上下载和编译android源码 一. 环境搭建. 因为MAC是大小写不敏感的操作系统,很多Linux命令不支持,所以首先要创建大小写敏感的操作系统。 打开磁盘工具,文件,新建映像,如图所示。 之后在设定的位置处就能看见创建的磁盘了,双击磁盘映像,就可以在侧边栏看见磁盘。2.安装m
在MAC上下载和编译android源码
打开磁盘工具,文件,新建映像,如图所示。
- cd MacPorts-2.3.4/
- ./configure
- make
- sudo make install
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
三.源码编译
- 终端输入
source build/envsetup.sh
- 设置编译目标
lunch aosp_arm-eng
- 开始编译
make -j8
或make -j4
或make -j16
,取决于你的CPU的线程数。 如果一切顺利的化,在几个小时之后,便可以编译完成.看到### 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.内存溢出
- 1
- 1
修改Jack的配置文件prebuilts/sdk/tools/jack-admin
,将
- 1
- 1
修改为
- 1
- 1
然后在终端输入
- 1
- 1
重新编译时会重新启动jack server。
继续编译make -j8。
4. 其它关于 Jack server 的错误
具体错误信息没有记下来,总之有时候会因为其它原因 Jack server 启动不了,一种可能性是因为已存在 ~/.jack-server
,把它删掉,并运行 jack-admin kill-server
杀掉进程(如果它确实在运行的话)。
5.磁盘空间不够
官网说 25GB 就够了,但其实远远不够,建议分 100GB。
更多推荐
所有评论(0)