美文网首页
Mac 10.12 编译Android源码

Mac 10.12 编译Android源码

作者: sunbinqiang | 来源:发表于2017-04-20 11:49 被阅读488次

折腾了一个多星期,终于把源码编译导入AS了, 本文主要记录源码编译过程中的几个问题。

1,首先是源码下载的问题, 问题不大,直接使用清华镜像下载,参考:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
要注意的是,现在网上有些文章记录的有点早, 还在使用git://链接,但是已经不支持了, 清华镜像的公告:2016-06-24 : 关闭 git:// 协议,仅支持 HTTPS

源码下载完成, 开始编译,下面主要记录编译的错误
2, mac osx版本的问题

build/core/combo/mac_version.mk:38: *****************************************************
build/core/combo/mac_version.mk:39: * Can not find SDK 10.6 at /Developer/SDKs/MacOSX10.6.sdk
build/core/combo/mac_version.mk:40: *****************************************************
build/core/combo/mac_version.mk:41: *** Stop..  Stop.

** Don't have a product spec for: 'aosp_arm'
** Do you have the right repo manifest?

打开“build/core/combo/mac_version.mk”,会看到并没有10.12这个版本,要绕过这个错误,简单的办法是直接修改这个文件:

mac_sdk_versions_supported :=  10.12

但是,到后面编译的时候,你会碰到另一个问题,就是下面这个问题

3, Mac osx 10.12 syscall 问题

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/unistd.h:733:6: note: 'syscall' has been explicitly marked deprecated here
'syscall' has been explicitly marked deprecated here

在10.12中,syscall函数被废弃了, 所以这里只能换回原来的SDK,10.11版本的, 我试了10.10版本的,还是会有问题的,所以直接下载10.11SDK,并且把上面第2个问题的文件 改为: mac_sdk_versions_supported := 10.11
SDK下载地址:
https://github.com/phracker/MacOSX-SDKs/releases (下载不稳定,一直没成功)
http://download.csdn.net/download/afunx/9802379

参考:
http://palanceli.com/2016/09/25/2016/0925AOSPOnMac/

4, [out/host/common/obj/JAVA_LIBRARIES/guavalib_intermediates/javalib.jar] Error 41

Types.java:317: error: TypeVariableImpl is not abstract and does not override abstract method getAnnotatedBounds() in TypeVariable
  private static final class TypeVariableImpl<D extends GenericDeclaration>
......
host C: libcrypto-host <= external/boringssl/src/crypto/mem.c
make: *** [out/host/common/obj/JAVA_LIBRARIES/guavalib_intermediates/javalib.jar] Error 41

这个问题是困扰最久的一个问题, 提示说TypeVariable这个接口的方法getAnnotatedBounds()没有被实现,网上找了很多资料,发现jdk8确实有这个问题。
解决方案是: 安装JDK7, 用JDK7来编译Android6.0源码。
安装了JDK7以后, JAVA_HOME这个环境变量就可以动态配置版本了:

JAVA_HOME="$(/usr/libexec/java_home -version 1.7)"

然后再编译, 就OK啦!

5, 空间不够的问题
因为大小写路径敏感问题, 我是新建了一个磁盘空间来存放android源码和编译,只分配了50G, 结果跑了一个多小时编译, 空间就满了。。满了。。。
然后, 在网上找了另一种跳过编译的方式,也可以在Android Studio中打开, 命令如下:

make idegen && development/tools/idegen/idegen.sh  //生成idegen.jar并生成ide导入所需的.ipr/.iml文件

用Android studio导入以后,还有几个问题需要注意的,详细见下面这篇参考文档吧:

http://www.jianshu.com/p/3922ec229077

相关文章

网友评论

      本文标题:Mac 10.12 编译Android源码

      本文链接:https://www.haomeiwen.com/subject/mbavottx.html