当前位置: 首页 > news >正文

(编译到47%失败)to be deleted

Mac 下 Android 源码编译从零开始:Day Two--编译

编译准备工作

官网链接:source.android.google.cn/source/buil…

编译命令的基本顺序如下:

下载专用二进制文件,即驱动文件

下载链接: developers.google.com/android/dri…

坑点:需要下载对应细分版本的驱动,对照如下图所示:

驱动官网:developers.google.com/android/dri…

选择对应的驱动下载,如图:

解压专有二进制文件

接下来将两个压缩包解压到源码根目录 WORKING_DIRECTORY,并分别运行两个解压后的.sh文件,cd 到 WORKING_DIRECTORY 目录,即源码根目录,分别在终端执行以下命令:

sh extract-huawei-angler.sh
复制代码
sh extract-qcom-angler.sh
复制代码

将驱动文件提取出来,放到新生成的 /vendor/ 目录下。

每组二进制文件都是压缩包中的一个自解压脚本。解压每个压缩包,从源代码树的根目录运行附带的自解压脚本,然后确认您同意附带的许可协议的条款。二进制文件及其对应的 Makefile 将会安装在源代码树的 vendor/ 层次结构中。

坑点:需要一直按enter,知道第8点的第e项,慢慢按,直到End,再按一次Enter就会提示你输入 “I ACCEPT” 来同意使用协议,之后才会提取出驱动文件到 /vendor/目录。

结束时会提示:

······
x vendor/qcom/angler/proprietary/iperf3
x vendor/qcom/angler/device-partial.mk

Files extracted successfully.
复制代码

如下图所示:

清理

source.android.com/setup/build…

为了确保新安装的二进制文件在解压后正确生效,请使用以下命令删除此前所有编译操作的已有输出:

make clobber
复制代码

坑点:由于Mac的SDK默认只有14的版本,编译需要的是14以下的SDK,因此执行 make clobber 时会报如下错误:

internal error: Could not find a supported mac sdk: ["10.10" "10.11" "10.12"]
复制代码

如图所示:

make clobber 清理成功如下图所示:

Final Step: 执行编译

设置环境 使用 envsetup.sh 脚本初始化环境。请注意,将 source 替换成 .(一个点)可以省去一些字符,这种简写形式在文档中更为常用。

source build/envsetup.sh
复制代码

. build/envsetup.sh
复制代码

选择目标

使用 lunch 选择要编译的目标。确切的配置可作为参数进行传递。例如以下命令:

lunch aosp_arm-eng
复制代码

该命令表示针对模拟器进行完整编译,并且所有调试功能均处于启用状态。

如果您没有提供任何参数就运行命令,lunch 将提示您从菜单中选择一个目标。

所有编译目标都采用 BUILD-BUILDTYPE 形式,其中 BUILD 是表示特定功能组合的代号。

BUILDTYPE 是以下类型之一:

要详细了解如何针对实际硬件进行编译以及如何在实际硬件上运行版本,请参阅运行版本。

编译代码

请注意,本部分只是一个摘要,用于确保设置已完成。如需关于编译 Android 的详细说明,请参阅运行编译系统。

您可以使用 make 编译任何代码。GNU Make 可以借助 -jN 参数处理并行任务,通常使用的任务数 N 介于编译时所用计算机上硬件线程数的 1-2 倍之间。例如,在一台双核 E5520 计算机(2 个 CPU,每个 CPU 4 个内核,每个内核 2 个线程)上,要实现最快的编译速度,可以使用介于 make -j16 到 make -j32 之间的命令。

make -j4
复制代码

坑点:万事开头难,事实上运行了几次都是同一个结果:failed

谷歌查到解决方案:可能是heap size 不足,尝试修改 heap size 大小。 blog.csdn.net/qq_27061049…

JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8
-XX:+TieredCompilation -mx4096M}"
复制代码

运行还是同样的报错,说明不是 heap size 不足的问题。

终极解决方案,感谢大神:

www.jianshu.com/p/35f840dd7…

内牛满面,很激动,终于编译通过了。事实证明,官方文档有很多坑都没指出来,如果仅仅跟随官方文档,只能是跟我这样一路含泪趟坑过来。本教程已经把该遇到的坑都埋了,请尽情享用,有遗漏之处,请不吝指出。

输入以下命令:

mm
复制代码

成功之后提示如下log:

 make completed successfully (01:31 (mm:ss)) 
复制代码

如截图所示:

接着 Replace prebuilt bison binary with patched binary

cp /Volumes/android/WORKING_DIRECTORY/out/host/darwin-x86/bin/bison /Volumes/android/WORKING_DIRECTORY/prebuilts/misc/darwin-x86/bison/
复制代码

Build

make  -j4
复制代码

小坑点:到执行 make -j4 命令进行最终编译前,记得退回到源码根目录,此处为 WORKING_DIRECTORY

正常编译中的截图如下所示:

最终编译成功之后的截图如下所示:

待补。

实际上,执行到51%又失败了,这次的原因折腾了N久才定位到:jack-server 无法 connect to 127.0.0.1 port 8077 failed: Connection refused

由于翻墙的需要,在前面需要对Mac设置全局代理,将蓝灯设置入口 参考链接:

相关文章:

  • (一)插入排序
  • 阿里一道Java并发面试题 (详细分析篇)
  • 内核对象句柄
  • 函数-函数文档
  • Zookeeper的介绍与基本部署
  • 前端开发学习Day29
  • 分布式配置中心disconf第二部(基于注解的实现)
  • nacos客户端篇
  • Java虚拟机,类文件结构深度解析
  • SpringCloud微服务治理三(Zuul网关)
  • JQuery实现表单验证
  • 钉钉与wcp集成通知【原创】
  • Html5新的选择器
  • 说说Charles
  • 对比MySQL,一文看透HBase的能力及使用场景
  • 08.Android之View事件问题
  • 3.7、@ResponseBody 和 @RestController
  • Android系统模拟器绘制实现概述
  • Effective Java 笔记(一)
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • interface和setter,getter
  • Linux下的乱码问题
  • MySQL QA
  • RxJS: 简单入门
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • !!Dom4j 学习笔记
  • #pragma pack(1)
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (1)(1.13) SiK无线电高级配置(五)
  • (6)添加vue-cookie
  • (function(){})()的分步解析
  • (pojstep1.3.1)1017(构造法模拟)
  • (简单) HDU 2612 Find a way,BFS。
  • (论文阅读11/100)Fast R-CNN
  • (三)uboot源码分析
  • (十一)c52学习之旅-动态数码管
  • (转) Face-Resources
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (转载)OpenStack Hacker养成指南
  • ./configure、make、make install 命令
  • .dwp和.webpart的区别
  • .NET 发展历程
  • .NET6 命令行启动及发布单个Exe文件
  • .Net小白的大学四年,内含面经
  • .net与java建立WebService再互相调用
  • .net专家(高海东的专栏)
  • /proc/vmstat 详解
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [383] 赎金信 js
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项