Mac下载并编译Google安卓AOSP项目代码
Mac下载并编译Google安卓AOSP项目代码
参考 https://source.android.com/source/index.html
这两天用Mac下载安卓AOSP源码,且把遇到的问题记下来。当然作为一个菜鸟,难免会有错误或者描述不对的地方,欢迎各路大神小神批评指正。转载请注明出处http://www.cnblogs.com/ryanchi/p/5682186.html。
一、准备环境
(请提前安装好xcode或command line tools)
Installing the JDK
The master branch of Android in the Android Open Source Project (AOSP) requires Java 8Creating a case-sensitive disk image
执行下面命令,将会在/Users/当前用户/目录下创建android.dmg文件,当然也可以自己定义文件位置。
$ hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg
This will create a .dmg (or possibly a .dmg.sparseimage) file.官方文档推荐40GB,后来发现完全不够用,这里我直接上100g,并且文件位置直接放在桌面,下次开机时直接双击打开,虽然MBP经常不关机。。。
$ hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 100g ~/Desktop/android.dmg如果你镜像创建完毕,想改变镜像大小,可以执行下面代码:
$ hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage你可以为bash添加function,以便快速挂载和卸载android.dmg文件。但如果和我一样偷懒镜像文件直接放桌面,则可以省略这一步,直接从桌面装载镜像就行。
# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
# unmount the android file image
function umountAndroid() { hdiutil detach /Volumes/android; }
二、Installing required packages
Install MacPorts from macports.org
直接下载MacPorts_xxx.pkg文件安装即可(xxx为版本号)。Note: Make sure that
/opt/local/binappears in your path before/usr/bin。可以通过$ echo $PATH命令查看。如果不是,在~/.bash_profile文件中添加下面代码,添加完毕后直接执行$ source ~/.bash_profile命令。
export PATH=/opt/local/bin:$PATH
* 我的情况是MacPorts_xxx.pkg安装完毕后,其自动在`~/.bash_profile`文件里添加了`export PATH="/opt/local/bin:/opt/local/sbin:$PATH"`
Get make, git, and GPG packages from MacPorts:
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg报错:
Error: Port gmake not found
执行
$ sudo port -d sync即可。
若执行上述命令继续报如下错误:receiving file list ... rsync: read error: Operation timed out (60)
Error: Synchronization of the local ports tree failed doing rsync
port sync failed: Synchronization of 1 source(s) failed
*解决办法:*
> 修改 `/opt/local/etc/macports/sources.conf`,将原来最后一行修改成如下,然后执行`$ sudo prot -v selfupdate`即可。
#rsync://rsync.macports.org/release/tarballs/ports.tar [default]
https://distfiles.macports.org/ports.tar.gz [default]
三、下载源码
Installing Repo
$ mkdir ~/bin # 在当前用户目录新建bin\文件夹
$ PATH=~/bin:$PATH # 将bin目录添加到PATH $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
Downloading the Android Source Tree
考虑到国内网络问题,这一步骤可以参考清华大学镜像资源站https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/的教程,写的很详细。下载AOSP月更新的初始化包,https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar。
解压。将下载得到的
aosp-latest.tar压缩文件直接拷贝到前面创建的xxx.dmg镜像文件装载的磁盘目录,执行$ tar xf aosp-latest.tar,稍等解压完毕后,当前目录会出现一个AOSP文件夹,该文件夹下有一个隐藏文件夹.repo。同步代码树。执行
$ repo sync。具体可以参考下面步骤:wget https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar
cd AOSP # 解压得到的 AOSP 工程目录
# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
repo sync # 正常同步一遍即可得到完整目录
# 或 repo sync -l 仅checkout代码
四、Build
Clean up
To ensure the newly installed binaries are properly taken into account after being extracted, delete the existing output of any previous build using:$ make clobber
报错
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.
解决办法:参考关于完整Android源码的阅读在
~/.bash_profile文件中指定ANDROID_JAVA_HOME为JDK路径即可。export ANDROID_JAVA_HOME=${JAVA_HOME}
Set up environment
$ source build/envsetup.sh
Choose a target
$ lunch aosp_arm-eng
ildtype Use er limited access; suited for production erdebug like "user" but with root access and debuggability; preferred for debugging g development configuration with additional debugging tools 可选的有
aosp_arm-eng、 aosp_arm64-eng、aosp_mips-eng、aosp_mips64-eng、aosp_x86-eng......Build the code
$ make -jN
N为数字,一般为cpu线程数1到2倍。我的本本是mbp2015年中,使用
$ make -j8,很多warning,不管即可,用了一个多小时,最后输出结果#### make completed successfully (01:06:05 (hh:mm:ss)) ####Emulate an Android Device
运行模拟器$ emulator
五、Building Kernels
到了这里,略坑。由于需要克隆谷歌git仓库到本地,所以配置完git的http代理以后,到AOSP项目中,cd进入kernel文件夹,直接
$ git clone https://android.googlesource.com/kernel/goldfish.git
等了一晚,结果如下:
remote: Sending approximately 982.87 MiB ...
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: 过早的文件结束符(EOF)
fatal: index-pack failed
由于使用的梯子不给力,试了好几次,都是clone了一部分后直接挂掉。。。所以现在正琢磨自己搭建ss服务器,同时也希望有好的梯子童鞋可以私聊推荐一下。内核这部分内容可以参考谷歌https://source.android.com/source/building-kernels.html或者罗升阳老师的博客 在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel)
THE END!
Mac下载并编译Google安卓AOSP项目代码的更多相关文章
- lunix或者centos服务器下如何下载自己在github上面的项目代码
1.在github找到项目压缩包下载地址 打开自己的github主页找到需要下载的项目首页,如图所示,找到zip下载地址(ps:如何找这个地址我就不多说了,了解过一点html的同学肯定很容易可以找到) ...
- Android 7.1.1系统源码下载、编译、刷机-Nexus 6实战
想成为一位合格的Android程序员或者一位Android高级工程师是十分有必要知道Android的框架层的工作原理,要知道其工作原理那么就需要阅读Android的源代码. 想要阅读Android的源 ...
- Google Code项目代码托管网站上Git版本控制系统使用简明教程
作为一个著名的在线项目代码托管网站,Google Code目前主要支持三种版本控制系统,分别为Git, Mercurial和 Subversion.Subversion即SVN相信大家都已经熟知了,这 ...
- macOS(Sierra 10.12)上Android源码(AOSP)的下载、编译与导入到Android Studio
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- mac os 平台下载并编译android2.3.3源码
现在在做有关android平台下的项目,最初对android环境各种不熟悉,搞了几个月终于有点眉目了,由于需要用到android本身提供的一些类似gps,tts等服务,单纯的看android提供的ja ...
- AOSP ON MAKO(在NEXUS 4上刷ANDROID 4.4 源代码包-下载/配置/编译/刷机)
AOSP ON MAKO(在NEXUS 4上刷ANDROID 4.4 源代码包-下载/配置/编译/刷机) 特别感谢google官方文档及AOSP源代码开放 參考链接: https://source.a ...
- v8 google 下载及编译
ubuntu环境下进行 参考文档: http://code.google.com/p/v8/wiki/BuildingWithGYP (一) 源码下载及编译 1, Google v8 官网:http: ...
- 在 Mac OS 上编译 FFmpeg
本文转自:在 Mac OS 上编译 FFmpeg | www.samirchen.com 安装 Xcode 和 Command Line Tools 从 App Store 上安装 Xcode,并确保 ...
- Google的C++开源代码项目
Google的C++开源代码项目 http://www.open-open.com/lib/view/open1413873531356.html v8 - V8 JavaScript Engin ...
随机推荐
- Servlet 中使用POI生成Excel
使用的是poi3.13 http://mvnrepository.com/artifact/org.apache.poi/poi/3.13 import java.io.IOException; im ...
- ibatis把表名作为一个参数报错问题的解决方案
用ibatis的时候,想把表名也作为一个参数传进去,可是报错了,在ibatis配置文件里面是#resource#的方式,报错信息如下: org.apache.cxf.interceptor.Fault ...
- 利用IKVM在C#中调Java程序
原文转自:http://luanxiyuan.iteye.com/blog/1937081 IKVM.NET是一个针对Mono和微软.net框架的java实现,其设计目的是在.NET平台上运行java ...
- 【转】怎么在Foxmail回复/转发时使用签名?
原文网址:http://kf.qq.com/faq/120322fu63YV130422yABZRZ.html Foxmail回复/转发时使用签名,可通过在模版中设置签名.如下版本操作方法: 一.fo ...
- 动态规划(树形DP):HDU 5834 Magic boy Bi Luo with his excited tree
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8UAAAJbCAIAAABCS6G8AAAgAElEQVR4nOy9fXQcxZ0uXH/hc8i5N+
- 参数化时按行读取txt文件,如何去掉换行符"\n"
参数化按行读取txt,每行默认自带了回车换行操作,导致脚本报错,故而按行读取时,需要去掉默认的'\n' #coding=utf-8 from selenium import webdriver imp ...
- 一键清除cvs/svn 目录
步骤一.编写注册表脚本 新建一个文本文件,把下面的代码COPY进去,保存为delSVNorCVS.reg(可直接从本文附件中下载) Windows Registry Editor Versi ...
- 教你修改Linux下高并发socket最大连接数所受的各种限制
1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开 文件数量的限制(这是因为系统为 ...
- 320. Generalized Abbreviation
首先想到的是DFS,对于每个单词的字母都遍历,比如 spy: 1py,s1y,sp1 然后每个遍历完的单词再DFS..左右有数字就合并比如 1py: 11y=>2py, 1p1 这样.. 但是单 ...
- 子元素margin-top属性传递给父元素的问题 转!
问题描述:一个父包含框包含一个子元素.给正常流的子元素一个垂直外边距margin-top就会使得父元素跟着往下走,而子元素和父元素的边距则没有发生变化. html结构:<div class=&q ...