题记:编译花了将近4小时,所以编译源码是很费时的哦,可以在编译的时候可以学习其他的知识

编译环境准备

  软件:WorkStation10

  系统:ubuntu14.04

  内存:8G

  处理器:4个

  磁盘大小:100G

以下是安卓7.1源码(全志)和内核编译步骤:

一、内核编译

  1、安装jdk8(注本人使用的是openjdk8)

  1.     sudo add-apt-repository ppa:openjdk-r/ppa
  2.     sudo apt-get update
  3.     sudo apt-get install openjdk--jdk
        java -version #检测jdk安装

  2、安装必要的一些包(以下的包,都是采坑一个个过来的,所以请务必都安装)

  1.     sudo apt-get install gawk #解决:awk: line 2: function strtonum never defined
  1.     apt-get install fakeroot #解决:../scripts/build_rootfs.sh: line 19: fakeroot: command not found
  1.     sudo apt-get install g++-multilib gcc-multilib #解决:lichee/tools/pack/pctools/linux/android/mkbootimg: No such file or directory

  

  3、不出意外的话,就可以看到如下成功编译结果

二、安卓源码编译

  1、进入安卓源码目录,执行以下命令

  1.   $cd ../android/ #安卓源码目录
  2.   $source build/envsetup.sh    #启动源码编译环境(即添加编译命令)
  3.   $lunch #选择平台编译选项

 

  2、启动lunch命令,选择平台(一般选22),如下图所示。

  这些系统平台含义如下:

  1.     eng: 工程机,
  2.     user:最终用户机
  3.     userdebug:调试测试机
  4.     tests:测试机

  

  3、执行以下命令,编译安卓源码

  1.     $extract-bsp
  2.     $make -j4 #编译(make -j4表示处理器4个,根据电脑配置选择)
  3.     $pack #将编译成功的系统打包成img镜像。

你以为步骤3这么容易?  No 。我大概花了4个晚上才成功,每天有不同的问题出现,主要是编译环境的问题,下面贴出我编译过程中出现的问题以及解决方法。

FAQ

  1. 问题一:出现*****prebuilts/misc/linux-x86/bison/bison.......
  2.  
  3. 解决方法:sudo apt-get install bison
  1. 问题二:出现ninja: build stopped: subcommand failed Android 或者GC overhead limit exceeded.
  2.  
  3. 解决方法:修改prebuilts/sdk/tools/jack-admin 文件内容
  4.  
  5. JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME" 改为
  1. JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"
  2. 注:-Xmx4096m或者-Xmx4g ,表示使用主机内存的一半,前面我说本人使用的内存是8G哦,当然如果你的内存大,可以使劲的用

问题三:出现Failed to contact Jack server: Problem reading .jack-server/client.pem. Try 'jack-diagnose'

  解决方法:

  jack-admin kill-server  #杀死jack进行

  jack-admin uninstall-server  #卸载jack服务

  make    # 编译

注:Jack编译器工具是一套新的Android编译工具用来将Java代码转换为Android dex字节代码,所以你jack就是用来将java代码编译成安卓的字节码编译器

 希望这些可以帮助大家!

ubuntu14.04+安卓7.1(全志源码)+openjdk-8编译的更多相关文章

  1. 很不错的安卓FadingActionBar控件源码

    这个我刚刚从一个github下载过来的,自己测试一下运行了,感觉还不错的,安卓FadingActionBar控件源码,现在就给大家分享一下,源码我已经上传到源码天堂那里了,想下载的朋友可以去那里下载吧 ...

  2. Ubantu16.04进行Android 8.0源码编译

    参考这篇博客 经过测试,8.0源码下载及编译之后,占用100多G的硬盘空间,尽量给ubantu系统多留一些硬盘空间,如果后续需要在编译好的源码上进行开发,需要预留更多的控件,为了防止后续出现文件权限问 ...

  3. [转]【安卓笔记】AsyncTask源码剖析

    [转][安卓笔记]AsyncTask源码剖析 http://blog.csdn.net/chdjj/article/details/39122547 前言: 初学AsyncTask时,就想研究下它的实 ...

  4. Ubuntu 10.04 安装Qt4.8.1 源码后字体模糊的问题

    Ubuntu 10.04 安装QT4.8.1 源码后字体模糊的问题. 附加解决 QT SDK 4.8.1 链接失败的问题 Ubuntu 10.04 编译QT源码后,编译程序,运行后IPA字体无法正常显 ...

  5. android源码下载以及编译自己的ROM

    android源码下载以及编译自己的ROM 最近发现kernel.org被墙了,为什么这种网站也能被墙了? 要想下载源码的话,只能绕过去了.下面是我从网上搜索到的一些下载方法: =========== ...

  6. Harmony OS 开发避坑指南——源码下载和编译

    Harmony OS 开发避坑指南--源码下载和编译 本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(Hi3516,Hi3518和Hi3861)的编译环境,以及如何将源码编译为三个 ...

  7. Android之源码之模块编译和调试

    Android之源码之模块编译调试 (一) 进行源码模块修改进行编译的调试 1.首先是从git或者svn上拉一套完整的工程下来,然后全编一下,一般这个时间比较长,大概会得2,3个小时左右, 2,编译成 ...

  8. 【原创】从零开始学SpagoBI5.X源码汉化编译

    从零开始学SpagoBI5.X源码汉化编译 一.新建Tomact Server 服务器并配置测试1.文件-新建-其他-过滤server-服务类型选择Tomact V7.0 Server2.根据需要修改 ...

  9. 51ak带你看MYSQL5.7源码2:编译现有的代码

    从事DBA工作多年 MYSQL源码也是头一次接触 尝试记录下自己看MYSQL5.7源码的历程 目录: 51ak带你看MYSQL5.7源码1:main入口函数 51ak带你看MYSQL5.7源码2:编译 ...

随机推荐

  1. servlet遇到的问题

    1 创建web项目没有xml自动生成 2  servlet 忽然报奇怪500错误  出现的BUG原因 JAVA bean没有设置  自动导入了其他User包

  2. Linux基础命令02

    常用的一些命令选项 向网络发送icmp检测主机是否在线 ping 指定发送包数量 ping -c windows系统中是ping -t不间断刷包 比如ping百度,ping不同,一直卡在这里,加了-w ...

  3. 开启防火墙如何部署k8s

    你可以不关闭防火墙,只需要开启这些端口就行了MASTER节点6443* Kubernetes API server 2379-2380 etcd server client API 10250 Kub ...

  4. cnblogs设置各级标题样式和目录

    向博客园申请js权限 我们需要进入博客园自定义博客模板的页面,向博客园管理团队申请页面运行js的权限. [博客园]->[设置]->[博客设置],点击页面上的js权限申请,然后填写申请的理由 ...

  5. logback.xml 配置详解(转)

    <?xml version="1.0" encoding="UTF-8"> <configuration> <!-- 设置控制台日 ...

  6. RobotFramework 截取中文中的数字比较时长

    先看下需求,这个报表中有个时长,需要对昨日和前日的时长进行比较,我们获取到的元素是例如“9分43秒”这样的格式 1.首先要讲中文中的分和秒分别提取出来 提取python代码如下: import res ...

  7. hdu 6052 To my boyfriend

    题目 OvO click here http://acm.hdu.edu.cn/showproblem.php?pid=6052 (2017 Multi-University Training Con ...

  8. Python之hashlib模块的使用

    hashlib模块主要的作用: 加密保护消息安全,常用的加密算法如MD5,SHA1等. 1.查看可用的算法有哪些 #!/usr/bin/env python # -*- coding: utf-8 - ...

  9. php回顾(3)系统函数

    abs()         绝对值 ceil()         向上取整 floor()       向下取整 round()     四舍五入           第二个参数:保留小数点后面几位 ...

  10. Java进阶知识04 Struts2的基础配置详解

    1.Struts2的原理/流程步骤 简单的理解:    1.客户端发送一个request请求,Tomcat服务器接收到的请求经过web.xml配置文件去处理,进入struts2的核心过滤器,从而进入s ...