Mac上编译并运行Android5.0源码
下载、配置环境、build和运行参考的都是Android Source提供的文档,包括:Initializing a Build Environment,Downloading the Source和Building the System。
我是在OSX 10.10.3上编译的AOSP,记录一下中途碰到的各种问题。
下载
AOSP需要翻墙,而且经常会断,还好是断点续传,坚持个两三天怎么也能下下来。
case sensitive system
我在Mac上对file system只会用Disk Utility进行操作。
make error 1
fatal error: linux/netfilter/xt_DSCP.h: No such file or directory
在目录external/iptables/extensions/../include/linux/netfilter中创建文件xt_DSCP.h。
/*
* based on ipt_FTOS.c (C) 2000 by Matthew G. Marsh <mgm@paktronix.com>
* This software is distributed under GNU GPL v2, 1991
*
* See RFC2474 for a description of the DSCP field within the IP Header.
*
* xt_DSCP.h,v 1.7 2002/03/14 12:03:13 laforge Exp
*/
#ifndef _XT_DSCP_TARGET_H
#define _XT_DSCP_TARGET_H
#include <linux/netfilter/xt_dscp.h>
#include <linux/types.h>
/* target info */
struct xt_DSCP_info {
    __u8 dscp;
};
struct xt_tos_target_info {
    __u8 tos_value;
    __u8 tos_mask;
};
#endif /* _XT_DSCP_TARGET_H */
make error 2
大概错误提示是jni_generator.py找不到substring方法,Google一番发现应该是JDK的版本有问题,使用Jenv将Mac的JDK版本设置为1.7可以解决。
make error 3
No space left on device
使用Disk Utility增加dmg的大小。
emulator 1
方便使用,需要在.bash_profile中增加:
  export PATH=/Volumes/[dmg title]/android/out/host/darwin_x86/bin
需要注意的是OSX 10.10.3版本中bin目录下没有生成emulator,可以将PATH该为/Volumes/[dmg title]/android/prebuilts/android-emulator/darwin-x86x64,也可以将emulator从该目录拷到/Volumes/[dmg title]/android/out/host/darwinx86/bin下。
emulator 2
  export ANDROID_PRODUCT_OUT=/Volumes/[dmg title]/android/out/target/product/generic
为什么export这个,请参考罗升阳的《Android系统源代码情景分析》。
emulator 3
加完这两个export后会报如下错误:
  emulator: ERROR: You did not specify a virtual device name, and the system directory could not be found.
  If you are an Android SDK user, please use '@<name>' or '-avd <name>' to start a given virtual device (see -help-avd for details).
  Otherwise, follow the instructions in -help-disk-images to start the emulator
增加:
  export ANDROID_BUILD_TOP=/Volumes/[Volumes]/android
emulator 4
最后解决如下错误:
emulator: WARNING: system partition size adjusted to match image file (550 MB > 200 MB)
emulator: WARNING: data partition size adjusted to match image file (550 MB > 200 MB)
运行emulator时增加参数:
emulator -partition-size 1024
Finally
最终在Mac上编译成功AOSP,并成功运行emulator,可以做进一步源码研究。
Reference
- fatal error: linux/netfilter/xt_DSCP.h: No such file or directory
 - jelly bean(adnroid4.1.1)下emulator不能直接运行的问题
 - ubuntu编译安卓5.0源码小记
 
Mac上编译并运行Android5.0源码的更多相关文章
- 编译android5.0源码的
		
java环境 Android 5.1 用到的jdk不再是Oracle 的 jdk ,而是开源的 openjdk,在ubuntu安装好后,使用如下命令安装jdk: $sudo apt-get insta ...
 - 编译Docker<v1.9.0>源码和初级安装
		
本文主要介绍了如何在POWER CPU处理器上编译和安装Docker服务.很多时候,我们都需要自己编译Docker源码,有的时候是由于自己的处理器没有对应的安装包,有的时候是由于当前的新版本还有发布, ...
 - 64位centos 下编译 hadoop 2.6.0 源码
		
64位os下为啥要编译hadoop就不解释了,百度一下就能知道原因,下面是步骤: 前提:编译源码所在的机器,必须能上网,否则建议不要尝试了 一. 下载必要的组件 a) 下载hadoop源码 (当前最新 ...
 - MacOS平台上编译 hadoop 3.1.2 源码
		
1. 先从官方下载源码:源码下载地址:https://hadoop.apache.org/releases.html,下载 3.1.2 版本 2. 解压缩源码:tar xvf hadoop-3.1.2 ...
 - 下载android5.0源码
		
方法还是与之前我介绍的下载源码的方法一样,但是repo需要更新一下,否则可能会出现以下错误: type commit tag v1.12.16 tagger Conley Owens <cco3 ...
 - mac OS X Yosemite 上编译hadoop 2.6.0/2.7.0及TEZ 0.5.2/0.7.0 注意事项
		
1.jdk 1.7问题 hadoop 2.7.0必须要求jdk 1.7.0,而oracle官网已经声明,jdk 1.7 以后不准备再提供更新了,所以趁现在还能下载,赶紧去down一个mac版吧 htt ...
 - Ubuntu 下载 & 编译 Android5.1 源码
		
ustc & tsinghua android srchttps://lug.ustc.edu.cn/wiki/mirrors/help/aosphttps://mirrors.tuna.ts ...
 - 在linux操作系统上进行简单的C语言源码的gcc编译实验
		
尝试在linux上用gcc 而非封装完好的codeblocks,vs等ide 来编译c和cpp源程序 首先查看我的gcc版本,我的是VM centos 自带的,没有的话得自行安装,安装上gcc就可以在 ...
 - ambari 2.5.0源码编译安装
		
参考:https://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/index.html Ambari 是什么 Ambar ...
 
随机推荐
- python _winreg模块
			
详细资料请参考:https://docs.python.org/2/library/_winreg.html 一.常用函数功能介绍 OpenKey() - 打开一个key ############## ...
 - asp.net或者MVC定时自动执行某操作
			
using System; using System.IO; using System.Runtime.CompilerServices; using System.Text; namespace S ...
 - Linux基础命令讲解(二)
			
Linux命令基本格式: 命令 [参数] [路径文件] 方括号内容可省略 查看命令帮助手段: 1 man 命令名 (man 还可以获取配置文件,函数的帮助) 2 命令 --help 3 help 命令 ...
 - 为啥REST如此重要?
			
摘要:REST——表征状态转移,由于REST模式的Web服务更加简洁,越来越多的Web服务开始采用REST风格设计和实现.例如,Amazon.com提供接近REST风格的Web服务进行图书查找:雅虎提 ...
 - WPF 绑定密码
			
我们发现我们无法绑定密码框的密码,PasswordBox 的 Password 不能绑定. 我们想做 MVVM ,我们需要绑定密码,不能使用前台 xaml.cs 监听 密码改变得到密码的值,传到 Vi ...
 - 恶意软件Mirai换了个马甲 瞄上我国2亿多台IoT设备
			
恶意软件Mirai换了个马甲 瞄上我国2亿多台IoT设备 想要起来时,一种沉重感阻碍着他,这是一种安全感:感觉到一张床为他铺好了,而且只属于他:想要静卧时,一种不安阻碍着他,把他从床上赶起来,这是 ...
 - PHP知识大全
			
--------------------------------------------------------- PHP知识大全 ---------------------------------- ...
 - java如何调用接口方式二
			
java如何调用接口 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适,所以,问题来了,java如何调用接口?很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对 ...
 - Linux中的各种软件安装
			
Linux下的软件形式 Linux上的软件有几种常见的方式 二进制发布包 软件包已经针对具体平台完成了编译和打包,解压后即可以使用,最多去改改配置文件,也是Linux上最通用和常见的软件包发布形式 例 ...
 - MongoDB固定集合(Capped Collections)
			
MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! ...