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 <[email protected]>
 * 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-previewhttps://developers.google.com/android/drivers#angler下载。

编译核心命令

  1. 手动开启jack-admin(尽量手动开启)
$ jack-admin kill-server

$ jack-admin start-server
  1. 清空make clobber
  2. 设置环境source build/envsetup.sh
  3. 选择targetlunch
  4. 開始编译make -j4

參考

  1. http://blog.csdn.net/sinat_26227857/article/details/44078703
  2. 问题4解决方法
  3. 问题5 官网jack-admin
  4. 问题5 csdn博客
  5. 问题6
时间: 2024-10-06 22:50:44

MacOS Sierra10.12.4编译Android7.1.1源代码必须跳的坑的相关文章

升级到macOS 10.12 mysqlb报错ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO)

系统升级到macOS 10.12后启动mysql后,在终端输入mysql 报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES/NO) 解决办法1 在系统偏好设置里关闭mySQL2 $ cd /usr/bin3 $ sudo mysqld_safe --skip-grant-tables4 再打开一个终端$ mysqlmysql> use mysql;mysql> UPDATE

解决Ubuntun 12.04编译Mesa10.3 WARNING: &#39;aclocal-1.14&#39; is missing on your system

安 装Mesa时,最后一个错误报“WARNING: 'aclocal-1.14' is missing on your system.”,虽然是个Warning,但是无法进行下一步make,所以必须解决.根据warning给的提示以及网上搜的信息判断,这是一个时间 戳变化导致的系统以为文件被修改,所以需要重新编译几个脚本文件.实际上我从官网下载来的源文件压缩包我根本没动过,应该是解压过程中系统版本不一样或者 时间差导致的文件时间戳发生了变化而已(能想到这个,因为我从本机往US的服务器传文件时,解

macOS 10.12,解决如何打开隐私中的任何来源方法

更新到macOS 10.12后,系统偏好设置-安全与隐私中默认去掉了允许任何来源的选项,打开该选项的方法: 在终端执行 sudo spctl --master-disable 再次打开设置就能找到该选项了. 如果再次选择了其他选项就是重新开启了GateKeeper,需要重新执行该命令来关闭GateKeeper.

Metal API随着iOS 10与macOS 10.12新引入的Tessellation特性

Tessellation--中文一般译作"细分曲面",一般用于将由少量顶点构成的面生成细节度更高的面.这其中的原理是将一个三角形或四边形,由GPU根据我们编程的控制点生成规则,自动生成更多的顶点,然后将这些顶点根据一定规则生成更多的三角形.这么一来,我们可以在3D游戏中在远处的敌人使用低模也能做出精细度较高的模型出来了,而且也省顶点数据传输带宽. 在Metal API中,通过tessellation绘制出的图形所走的渲染流水线会与通过传统的顶点着色器所走的渲染流水线会有所不同.Meta

qt5.5.1 苹果电脑10.12.2 编译报错&#39;cstddef&#39; file not found

问题: qt5.5.1   苹果电脑10.12.2  编译报错: /Users/apple/Qt5.5.1/5.5/clang_64/lib/QtCore.framework/Headers/qglobal.h:39: error: 'cstddef' file not found 解决办法: 打开Pro文件, 添加一条 QMAKE_MAC_SDK=macosx10.12 意思就是设置编译SDK 和苹果系统一样. qt5.5.1 苹果电脑10.12.2 编译报错'cstddef' file no

macOS 10.12.1 + Xcode 8.1 安装cocoapods 1.1.1

最近公司刚给配了一台27寸的iMac,5K屏幕,这酸爽~~,新电脑,免不了系统升级,环境搭建,当一切就绪之后,我就准备装cocoapods了,然而,以前所有的教程全部都变得没用了...然而网上一大堆关于macOS的安装cocoapods教程,眼花缭乱,找到几篇好的综合着看,同时结合自己成功的例子,记录下来... 首先,电脑是新买的,当然是完全没装过cocoapods了,系统是最新的macOS 10.12.1,Xcode 8.1,由于cocoapods1.1.1的坑爹,先检查自己的gem版本和ru

unbutu server 12.04编译apk注意事项

1.系统自带的open jre是可以的,不过需要安装 sudo apt-get install openjdk-7-jre 2.一直提示build.xml错误 则需要 sudo apt-get install lib32stdc++6 sudo apt-get install lib32stdc++6 lib32z1 lib32z1-dev unbutu server 12.04编译apk注意事项

ThinkPad-X220 macOS 10.12.6 Installation Document

Step 1. Open /Applications > Utilities > Disk Utility Step 2. Open?/Applications > Utilities > Terminal and then enter the following commands to creat Install macOS Sierra (disk2s1) sudo su; open /Volumes/linyongfeng\ HD/Library/Utilities/Inst

VBox 安装 macOS 10.12

安装步骤⑴ 下载及解压 macOS 10.12 Sierra Final by TechReviews.rar ⑵ 下载及双击安装 VirtualBox-5.1.6-110634-Win.exe ,默认安装 VirtualBox 在 C:\Program Files 及继续安装 Oracle_VM_VirtualBox_Extension_Pack-5.1.6-110634.vbox-extpack Windows 10 要安装 VirtualBox 5.1.xWindows 7 可安装 Vir