2019独角兽企业重金招聘Python工程师标准>>>

摘自自己的github

build-android-in-OS-X-Yosemite-Xcode-7

build whole android (AOSP) in Mac OS X Yosemite + Xcode 7.0.1(v10.5 SDK)

My environment:

Mac OX X 10.10.5(14F27)
Xcode 7.0.1(7A1001)
jdk1.7.0_80
jdk1.8.0_51 (Default)

First of course, download AOSP by official instructions except that i use android-5.1.1_r14 branch instead of android-4.0.1_r1.

Then what i did especically are:

1. To avoid check error of OS X SDK version, run following command first:

export build_mac_version=`sw_vers -productVersion`  #for me, result is 10.10.5
export mac_sdk_version=10.9  #this is the biggest version AOSP build system support
export mac_sdk_root=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
export gcc_darwin_version=11

2. To skip disk case sensitive check and java version check, create a file TOP_AOSP_DIR/out/versions_checked.mk with contents:

VERSIONS_CHECKED := 5
BUILD_EMULATOR ?= false

AOSP要求输出所在的文件系统区分大小写,这真是无稽之谈,我不相信有什么工具故意生成大小写不同的两个文件。而且java版本检查做的很笨,envsetup.sh里都能够正确的检测出了1.7了,为何这里就傻乎乎的非要执行1.8的java,还给我抱错!索性跳过去。

3. To avoid error of some header files not found, create a symbol link MacOSX10.11.sdk/...c++/v1 => xctoolchain/...c++/v1:

sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/c++/v1

这个是我用-v选项打印出include path list后发现的。Xcode 7就自动的使用了toolchain的那个c++/v1。这个v1似乎是C++11的意思。一开始我把v1指向和他同级别的4.2.1目录,结果在ld链接时发生很多std:string的符号找不到,查呀查,发现需要用libstdc++而不是默认的libc++。后来发现Xcode根本就不用这个4.2.1目录里的东西,而是toolchain那边的,这才发现4.2.1里都是GNU的C++头文件,而v1里的都是LLVM工程里C++头文件。

4. AOSP's prebuild compiler for host side can not handle some latest header file of OS X SDK, i have no way, so modify following two files:

$mac_sdk_root/System/Library/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGFont.h:

53c53,54
< static const CGFontIndex kCGGlyphMax = kCGFontIndexMax;
---
> //static const CGFontIndex kCGGlyphMax = kCGFontIndexMax;
> static const CGFontIndex kCGGlyphMax = ((1 << 16) - 2);

$mac_sdk_root/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Headers/FSEvents.h:

489a490
> #if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_9
495a497
> #endif

就是在489行插入#if,495行插入#endif。这个改动使得10.10以下无效,10.10开始才有效,本来里面的内容就是这个前提的,所以不影响Xcode的使用。


OK, now you can make, as a tip, you can add "showcommands" option to make, and even combine more like following commands to save output with timestamp prefix to log file.

make -j4 -k showcommands 2>&1 | (while read line; do echo `date +"%Y-%m-%d %H:%M:%S"` $line; done) | tee out/make.log

Good luck

转载于:https://my.oschina.net/osexp2003/blog/517967

build-android-in-OS-X-Yosemite-Xcode-7相关推荐

  1. android.os.build修改,Android的os.BuildID对应的SDK版本号以及SDK版本号与APILevel对应关系.docx...

    Android的os.BuildID对应的SDK版本号以及SDK版本号与APILevel对应关系 Android 的os.Build_ID 对应的SDK版本号以及 SDK版本号与API Level对应 ...

  2. 详细的OS X Yosemite 10.10懒人版安装教程

    永远记住一句话:难,是因为不会.先是要放宽心态,才更利于解决安装过程中 这样那样的问题.多尝试多动脑,不要有过份的依赖.很多问题到解决以后,才发现是 如此的简单,我装黑苹果是拿来使用的,所以我的目的是 ...

  3. Mac OS X Yosemite安装盘U盘制作

    从App Store下载Mac OS X Yosemite安装程序,下载后的安装文件保存在应用程序(/Applications)文件夹中.请注意,此时一定不要直接启动该程序安装 OS X Yosemi ...

  4. 使用ionic cordova build android --release --prod命令打包报错解决方法

    使用ionic cordova build android --release --prod命令打包报有如下错误及解决方法 只要把以下内容添加到build-extras.gradle或(build** ...

  5. Mac OS X Yosemite Arduino安装CH340 USB转串口驱动

    新买的Arduino开发板 USB转串口使用了CH340芯片,在Mac OS X Yosemite上正常安装驱动后,在Arduino IDE的端口没发现相应的设备,使用以下方法后就能使用USB转串口调 ...

  6. MAC OS X Yosemite安装与试用

    MAC OS X Yosemite安装与试用 北京时间2014年6月3日凌晨,苹果公司在美国旧金山Moscone中心召开2014年度全球开发者大会(WWDC 2014),发布了新一代Mac操作系统OS ...

  7. 如何在 OS X Yosemite 中安装 Java

    如果你的 Mac 纯净的安装了 OS X Yosemite 的话,其中是不会包含 Java 的,如果你的 Mac 需要安装 Java 环境的话,可以通过下面介绍的两种方法来实现.通过手动安装最新版 J ...

  8. Eclipse build Android时不生成apk问题解决方法

    Eclipse build Android时不生成apk问题解决方法 参考文章: (1)Eclipse build Android时不生成apk问题解决方法 (2)https://www.cnblog ...

  9. 苹果本周四将发布 OS X Yosemite 公开测试版

    根据 The Loop 网站 Jim Dalrymple 报告,苹果本周四,7月24日将发布 OS X Yosemite 公开测试版.任何注册加入 OS X Beta 项目的用户都可以安装测试并为苹果 ...

  10. ionic build android release,ionic build android -release运行报错

    ionic build android -release运行报错,Could not reserve enough space for 2097152KB object heap,检查了应该有足够的空 ...

最新文章

  1. SpringBoot定时任务实现的两种方式介绍
  2. oracle 主键删除,联合主键的创建
  3. python转为字节_将字节转换为python中的位
  4. 【爬虫剑谱】二卷7章 实战篇-搭建IP代理池绕过反爬检测
  5. Tomcat详解(四)——Tomcat配置详解
  6. STL中的关联式容器——map(映射)
  7. js my_first
  8. JAVA简历1到三年
  9. IAR8.3安装步骤
  10. 4、IP信息查询API接口,免费好用
  11. DOM算法系列002-寻找指定DOM节点的上一个或下一个节点
  12. 电脑怎么查看处理器CPU型号、属性以及显卡型号
  13. Psins代码解析之线性误差模型精度验证(test_SINS_error_model_verify.m)
  14. pic18f66k80_boot 与 led (hex)
  15. 华为陈黎芳:已在全球获得50多个5G商业合同
  16. Media.Metrics简介
  17. 介绍芯片时为什么都要介绍制程?制程到底是什么?14nm、10nm?
  18. java的整数类型_java整数类型
  19. 容器监控之cadvisor介绍
  20. 操作系统-资源分配银行家算法

热门文章

  1. 病毒入侵计算机的危害,那些年电脑中过的病毒,中病毒的危害又有哪些
  2. matlab 神经网络预测时间序列示例(水痘模型)
  3. “输入字符不是 MATLAB 语句或表达式中的有效字符”的解决办法
  4. 纯CSS3实现GIF图片动画效果
  5. 网站建设中购买虚拟主机重要参数有哪些?
  6. cmd xcopy进行远程复制
  7. 学嵌入式Linux软件开发需要的知识
  8. Azure运维系列 3:善用Azure捕获功能事半功倍
  9. Jquery 选择器大全 【转载】
  10. struts2中用户登陆验证的常用方法