完整的过程见这里http://source.android.com/source/index.html 我只是记录一下中间可能遇到的坑。我用的环境是ubuntu 16.04,源码用的Android 6.0.1, 设备是Nexus 5X。

JDK安装

好像编译Android6.0需要的是JDK7而不是JDK8,官网上的说明好像有误。 这样安装7:

sudo add-apt-repository ppa:openjdk-r/ppa

sudo apt-get update

sudo apt-get install openjdk-7-jdk

可以这样切换JDK版本

sudo update-alternatives --config java

sudo update-alternatives --config javac

依赖测试设备的问题

内存不足

internal compiler error: Killed (program cc1plus) recipe for target ...glsBuiltinPrecisionTests.o failed 这是因为内存不足。 其实人家说了编译需要15G内存,200G硬盘。但是穷啊,只有2G内存。 这样解决:

sudo dd if=/dev/zero of=/swapfile bs=64M count=16

sudo mkswap /swapfile

sudo swapon /swapfile

Ubuntu16

clang: error: linker command failed with exit code 1 这是clang编译器报错,这个坑只有用最新版Ubuntu16的时候有。解决方法: 修改art/build/Android.common_build.mk:

ifneq ($(WITHOUT_HOST_CLANG),true)

改为:

ifeq ($(WITHOUT_HOST_CLANG),false)

设备连接不上

运行adb device如果没有列出设备,说明usb rules有问题。 在这里更新usb rules:http://source.android.com/source/initializing.html#configuring-usb-access 如果还是有问题例如no permissions,运行lsusb命令,查找设备对应的两个id,并且在/etc/udev/rules.d/51-android.rules(文件名字可能不同)里面增加规则:

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0c87",MODE="0666"

重新加载

$sudo chmod a+rx /etc/udev/rules.d/70-android.rules

$sudo service udev restart

重新连接设备.

刷机waiting device

运行adb reboot bootloader,如果不能进入fastboot模式,则说明设备连接有问题。

官网上说运行fastboot flashall -w来刷机,但实际上会出现错误。 解决方法是用sudo运行,并且增加-p 参数(其实就是构建的时候输入的代号)。如下:

sudo $(which fastboot) oem unlock

sudo $(which fastboot) flashall -w -p bullhead

其他错误

bad request, see jack server log

这个错误不要紧,再重新编译就行了。

Start jack server fail

这个错误也不要紧,重新编译就行了。

android编译空间大小,编译Android源码的坑相关推荐

  1. Android高版本P/Q/R源码编译指南

           Android高版本P/Q/R源码编译指南 Android源码编译系列博客: Android.bp你真的了解吗 Android.bp入门指南之Android.mk转换成Android.b ...

  2. Android OpenGL ES 学习(十) – GLSurfaceView 源码解析GL线程以及自定义 EGL

    OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学 ...

  3. Android 9 (P) Zygote进程启动源码分析指南二

         Android 9 Zygote进程启动源码分析指南二 Android 9 (P) 系统启动及进程创建源码分析目录: Android 9 (P)之init进程启动源码分析指南之一 Andro ...

  4. Android经典著名的百大框架源码解析(retrofit、Okhttp、Glide、Zxing、dagger等等)

    我们Android程序员每天都要和源码打交道.经过数年的学习,大多数程序员可以"写"代码,或者至少是拷贝并修改代码.而且,我们教授编程的方式强调编写代码的艺术,而不是如何阅读代码. ...

  5. Android技术栈--HashMap和ArrayMap源码解析

    1 总览 WARNING!!:本文字数较多,内容较为完整并且部分内容难度较大,阅读本文需要较长时间,建议读者分段并耐心阅读. 本文会对 Android 中常用的数据结构进行源码解析,包括 HashMa ...

  6. java音频源码,Android Java实时音频SDK示例源码下载 - 开发者中心 - ZEGO即构科技

    示例源码 本地下载 本地下载 GitHub下载 说明 示例代码运行指引 1 准备环境 在开始集成 ZEGO Express SDK 前,请确保开发环境满足以下要求(以下说明皆以 macOS 开发电脑为 ...

  7. Android Jetpack组件之 Paging使用-源码

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  8. android 使用4大组件的源码,Android Jetpack架构组件之 Paging(使用、源码篇)

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  9. Android学习笔记-常用的一些源码,防止忘记了

    Android学习笔记-常用的一些源码,防止忘记了... 设置拨打电话 StringdialUri="tell:"+m_currentTelNumble; IntentcallIn ...

最新文章

  1. SQL Server 2017 AlwaysOn on Linux 配置和维护(18)
  2. 接口测试 -- 关闭 requests 打开的 file
  3. CSS中Float概念相关文章
  4. A Painless Q-learning Tutorial (一个 Q-learning 算法的简明教程)
  5. 32位程序调用64位dll_电脑系统怎样区分32位和64位
  6. Feature Support and Procedure Mapping
  7. wrapper包装java_java Object 类 与 Wrapper包装类
  8. Leetcode--150. 逆波兰表达式求值
  9. C++中建立对象间消息连接的系统方法
  10. 箭头函数和普通函数有什么区别?
  11. 工具 | 网络调试助手的简单使用
  12. LabVIEW编程LabVIEW开发1920 LCR仪表例程与相关资料
  13. 2022-2028年中国罐头行业市场专项调研及发展策略分析报告
  14. wex5 tomcat配置php,WeX5 Tomcate 发布
  15. CSDN余额充值协议
  16. Docker容器之Consul部署
  17. 【nexus】 的下载与环境配置
  18. Scrum的七宗罪和其他的敏捷反模式
  19. 字符串编辑距离之Damerau–Levenshtein Distance
  20. 《战胜华尔街》之25条股票投资黄金法则

热门文章

  1. 建设网站的一般流程有哪些?专业建站和个人建站一样可信吗?
  2. access authority
  3. FLash Builder编辑器
  4. python构造函数、元组实例
  5. html使页面崩溃,HTML5新特性Bug:这12行代码分分钟让你浏览器崩溃iPhone重启
  6. setenforce: SELinux is disabled解决方案
  7. 二一、正交补、转置矩阵的秩、子空间的维度
  8. 我一个二本大学是如何拿到百度、网易大厂offer的!【原文】
  9. 【附源码】计算机毕业设计SSM网上化妆品商城设计
  10. python graphviz安装