MacOS Sierra10.12.4编译Android7.1.1源代码必须跳的坑
简单介绍
下载Android7.1.1源代码花费了两天,编译整个源代码相同花费了2天,期间遇到无数个坑。
如今编译源代码,一旦中间遇到错误,则要又一次開始。
本文记录编译过程遇到的问题及解决方式,如有编译源代码需求的能够參考本文先把这些坑跳过然后再编译,Mac环境为10.12.4.
编译步骤
直接參考官方指导就可以https://source.android.com/source/initializing.html
这些步骤当中暗含深坑,以下将一一讲解.
问题1–Mac上大写和小写不敏感
在Mac上默认是大写和小写不敏感的。即你新建个a目录和A目录。两者会觉得是一个目录,不让其创建第二个A。
因为不舍得在笔记本上开40G空间。我是在移动硬盘上建了个50G的dmg,然后挂载到/Volumes/android路径下。
能够按官方网档用命令建dmg,也能够用自带的磁盘工具来完毕。打开磁盘工具,然后点击文件–新建:
接着把格式选成Mac OS扩展(区分大写和小写,日志式)
建好符合格式要求的dmg后,把源代码复制到/Volumes/android就能够了.
问题2–JDK版本号问题
编译前请检查JDK版本号,看官网上的说明:
Java Development Kit (JDK)
Please note, since there are no available supported OpenJDK 8 packages for Ubuntu 14.04, the Ubuntu 15.04 packages must be installed manually. See JDK for Ubuntu LTS 14.04 for precise instructions.
The master branch of Android in AOSP: Ubuntu - OpenJDK 8, Mac OS - jdk 8u45 or newer
Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - OpenJDK 7, Mac OS - jdk-7u71-macosx-x64.dmg
Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6, Mac OS - Java JDK 6
Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu - Java JDK 5
在Mac OS上须要jdk 8u45之后的版本号。假设版本号低于这个,将会报一个错。我索性安装的最新的,直接1.8.0_112:
~ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
问题3–fatal error: linux/netfilter/xt_DSCP.h: No such file or directory
具体报错信息例如以下:
In file included from out/target/product/generic/obj/STATIC_LIBRARIES/libext4_intermediates/libipt_ECN.c:11:0:
external/iptables/extensions/../include/linux/netfilter_ipv4/ipt_ECN.h:13:37: fatal error: linux/netfilter/xt_DSCP.h: No such file or directory
#include <linux/netfilter/xt_DSCP.h>
^
compilation terminated.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libext4_intermediates/libipt_ECN.o] Error 1
make: *** Waiting for unfinished jobs....
解决方法,在相应目录下新建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 */
问题4–Unsupported curl
问题详情:
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
[ 27% 12844/46181] host Java: bouncycastle-host (out/host/common/obj/JAVA_LIBRARIES/bouncycastle-host_intermediates/classes)
须要又一次装curl:You need install a curl compiled with openssl
从http://curl.haxx.se/download.html下载。然后:
./configure --prefix=/usr/local/curl --with-ssl=/usr/local/Cellar/openssl/1.0.2d_1
make && make install
然后将/usr/local/curl/bin加入到PATH,通过一下验证是否安装好curl:
$ curl --version
curl 7.46.0 (x86_64-apple-darwin15.2.0) libcurl/7.46.0 OpenSSL/1.0.2d zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
问题5–jack-admin Out of memory error
假设是默认设置的话。一定会遇到这个问题,具体log:
FAILED:Jack server failed to (re)start, try 'jack-diagnose' or see Jack server log
No Jack server running. Try 'jack-admin start-server'
……
ninja: build stopped: subcommand failed.
make[1]: *** [ninja_wrapper] Error 1
參考http://blog.csdn.net/luvzhan/article/details/53282968,解决方法编辑prebuilts/sdk/tools/jack-admin文件,在JACK_SERVER_COMMAND=“…… -cp ……” -cp前加入-Xmx7000m,(7000m为内存大小的一半左右,依据所用的主机配置而定)。
切记:之后再编译前一定要手动开启jack-admin start-server
也能够參考官网里的一段:
If you experience Jack compilations failing on Out of memory error.:
You can improve the situation by reducing the number of jack simultaneous compilations by editing your $HOME/.jack-server/config.properties and changing jack.server.max-service to a lower value and then restarting the server.
If this is not enough, you may change the arguments used to start the server jvm and force a greater maximum Java heap size (“-Xmx”):
Stop the server using jack-admin stop-server, then:
If you start the server manually:
JACK_SERVER_VM_ARGUMENTS="-Xmx2g -Dfile.encoding=UTF-8 -XX:+TieredCompilation" jack-admin start-server
If you use the jack server in the android tree then
export ANDROID_JACK_VM_ARGS="-Xmx2g -Dfile.encoding=UTF-8 -XX:+TieredCompilation"
and restart your build command.
其实这里是一个意思。我建议直接改动jack-admin文件.
问题6–error: 'syscall' is deprecated
在MacOSX10.11之后的平台上编译源代码会遇到这个问题,解决方法是从https://github.com/phracker/MacOSX-SDKs下载MacOSX10.11,
解压复制到/Applications/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs。为了避免下次升级的时候再被删除,能够放到一个自己的目录(/Users/xu/work/git/MacOSX-SDKs/),再给它创建一个软链接:
sudo ln -s /Users/xu/work/git/MacOSX-SDKs/MacOSX10.11.sdk /Applications/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
然后确保AOSP源代码下build/core/combo/mac_version.mk文件里
mac_sdk_versions_supported := 10.9 10.10 10.11
后面不要写10.12.
问题7–不要忘了下载驱动
假设你想将编译后的镜像安装到手机,编译源代码前不要忘了下载驱动:https://developers.google.com/android/blobs-preview或https://developers.google.com/android/drivers#angler下载。
编译核心命令
- 手动开启jack-admin(尽量手动开启)
$ jack-admin kill-server
$ jack-admin start-server
- 清空
make clobber - 设置环境
source build/envsetup.sh - 选择target
lunch - 開始编译
make -j4
參考
MacOS Sierra10.12.4编译Android7.1.1源代码必须跳的坑的更多相关文章
- macOS Sierra10.12.5 显示允许任何来源
在终端输入:sudo spctl --master-disable即可.
- 在MacOS 10.12上安装Tomcat8.5
在MacOS 10.12上安装Tomcat8.5 原文链接:https://wolfpaulus.com/journal/mac/tomcat8/ Context 已安装Java,使用java -ve ...
- 升级到macOS 10.12 mysqlb报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
系统升级到macOS 10.12后启动mysql后,在终端输入mysql 报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' ...
- 对<< ubuntu 12.04编译安装linux-3.6.10内核笔记>>的修正
前题: 在前几个月的时候,写了一篇笔记,说的是kernel compile的事情,当时经验不足,虽说编译过了,但有些地方写的有错误--因为当时的理解是有错误的.今天一一更正,记录如下: 前文笔记链接: ...
- MacOS 10.12 Sierra 安全性与隐私没有任何来源选项解决方法
MacOS 10.12 Sierra 安全性与隐私没有任何来源选项解决方法 来源: 时间:2016年09月21日 在升级了macOS Sierra (10.12)版本后在“安全性与隐私”中不再有“任何 ...
- VBox 安装 macOS 10.12
安装步骤⑴ 下载及解压 macOS 10.12 Sierra Final by TechReviews.rar ⑵ 下载及双击安装 VirtualBox-5.1.6-110634-Win.exe ,默 ...
- 在VS13上编译通过的代码放在12上编译-错误:l __dtoui3 referenced in function _event_debug_map_HT_GROW
在VS13上编译通过的代码放在12上编译 遇到错误:l __dtoui3 referenced in function _event_debug_map_HT_GROW 1>------ 已启动 ...
- macOS 10.12.1 + Xcode 8.1 安装cocoapods 1.1.1
最近公司刚给配了一台27寸的iMac,5K屏幕,这酸爽~~,新电脑,免不了系统升级,环境搭建,当一切就绪之后,我就准备装cocoapods了,然而,以前所有的教程全部都变得没用了...然而网上一大堆关 ...
- nginx-1.12.2编译安装指导
nginx-1.12.2编译安装 下载源码包 安装 安装后配置 下载源码包 下载地址:http://nginx.org/en/download.html nginx-1.12.2:http://ngi ...
随机推荐
- 基于SQL和PYTHON的数据库数据查询select语句
#xiaodeng#python3#基于SQL和PYTHON的数据库数据查询语句import pymysql #1.基本用法cur.execute("select * from biao&q ...
- 如何使用 MSBuild.exe 生成解决方案中的特定目标
以前都是直接使用VS或者msbuild生成整个解决方案,或者只构建单个工程. 这回使用msbuild构建单个工程的时候出现了问题,因为工程中使用了SolutionDir这个宏来定位第三方库路径. 对于 ...
- 图解Win7如何手动添加受信任证书
点击开始—>运行,如下图所示: 弹出“控制台”窗口如下,如下图所示: 点击“文件—添加/删除管理单元”,如下图所示: 选择“证书”,并点击“添加”,如下图所示: 在弹出的窗口上选 ...
- LVM逻辑卷管理测试——创建逻辑卷
虚拟机里再添加两块硬盘,如下所示: 启动系统后,我们可以看到新添加的两块硬盘为/dev/sdb和/dev/sdc.每个2GB. [root@lxjtest ~]# fdisk -l Disk /dev ...
- Kafka流处理平台
1. Kafka简介 Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性 ...
- 阿里云安装jdk,tomcat,maven,svn,git,nginx
1. 首先通过xftp等工具上传安装包 2. 配置目录 cd usr mkdir java cd java mkdir jdk mkdir tomcatmkdir maven 3. 安装jdk 3.1 ...
- Linux下DIR,dirent,stat等结构体详解(转)
最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅. 首先说说DIR这一结构体,以下为DIR结构体的定义: struct __dirstre ...
- Fedora下使用minicom及USB串口线
一.minicom Fedora不像以前的RedHat,不能直接输入minicom回车,因为在目录/dev/下面没有modem这个子目录,而minicom的运行默认是有这个目录的,所以直接敲是不行的. ...
- Maven学习--- 搭建多模块企业级项目
我们先在eclipse中新建一个maven项目,pom.xml的文件如下: 搭建多模块项目,必须要有一个packaging为pom的根目录.创建好这个maven项目后,我们对着项目右键-->ne ...
- php定时执行sphinx的增量索引
/** * 每天定时执行的sphinx索引增量更新 * @author guo.jing * 2015-05-08 * @param $indexerArr(执行要更新的索引) */ public f ...