android编译空间大小,编译Android源码的坑
完整的过程见这里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源码的坑相关推荐
- Android高版本P/Q/R源码编译指南
Android高版本P/Q/R源码编译指南 Android源码编译系列博客: Android.bp你真的了解吗 Android.bp入门指南之Android.mk转换成Android.b ...
- Android OpenGL ES 学习(十) – GLSurfaceView 源码解析GL线程以及自定义 EGL
OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学 ...
- Android 9 (P) Zygote进程启动源码分析指南二
Android 9 Zygote进程启动源码分析指南二 Android 9 (P) 系统启动及进程创建源码分析目录: Android 9 (P)之init进程启动源码分析指南之一 Andro ...
- Android经典著名的百大框架源码解析(retrofit、Okhttp、Glide、Zxing、dagger等等)
我们Android程序员每天都要和源码打交道.经过数年的学习,大多数程序员可以"写"代码,或者至少是拷贝并修改代码.而且,我们教授编程的方式强调编写代码的艺术,而不是如何阅读代码. ...
- Android技术栈--HashMap和ArrayMap源码解析
1 总览 WARNING!!:本文字数较多,内容较为完整并且部分内容难度较大,阅读本文需要较长时间,建议读者分段并耐心阅读. 本文会对 Android 中常用的数据结构进行源码解析,包括 HashMa ...
- java音频源码,Android Java实时音频SDK示例源码下载 - 开发者中心 - ZEGO即构科技
示例源码 本地下载 本地下载 GitHub下载 说明 示例代码运行指引 1 准备环境 在开始集成 ZEGO Express SDK 前,请确保开发环境满足以下要求(以下说明皆以 macOS 开发电脑为 ...
- Android Jetpack组件之 Paging使用-源码
1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...
- android 使用4大组件的源码,Android Jetpack架构组件之 Paging(使用、源码篇)
1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...
- Android学习笔记-常用的一些源码,防止忘记了
Android学习笔记-常用的一些源码,防止忘记了... 设置拨打电话 StringdialUri="tell:"+m_currentTelNumble; IntentcallIn ...
最新文章
- SQL Server 2017 AlwaysOn on Linux 配置和维护(18)
- 接口测试 -- 关闭 requests 打开的 file
- CSS中Float概念相关文章
- A Painless Q-learning Tutorial (一个 Q-learning 算法的简明教程)
- 32位程序调用64位dll_电脑系统怎样区分32位和64位
- Feature Support and Procedure Mapping
- wrapper包装java_java Object 类 与 Wrapper包装类
- Leetcode--150. 逆波兰表达式求值
- C++中建立对象间消息连接的系统方法
- 箭头函数和普通函数有什么区别?
- 工具 | 网络调试助手的简单使用
- LabVIEW编程LabVIEW开发1920 LCR仪表例程与相关资料
- 2022-2028年中国罐头行业市场专项调研及发展策略分析报告
- wex5 tomcat配置php,WeX5 Tomcate 发布
- CSDN余额充值协议
- Docker容器之Consul部署
- 【nexus】 的下载与环境配置
- Scrum的七宗罪和其他的敏捷反模式
- 字符串编辑距离之Damerau–Levenshtein Distance
- 《战胜华尔街》之25条股票投资黄金法则