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

编译环境准备

  软件:WorkStation10

  系统:ubuntu14.04

  内存:8G

  处理器:4个

  磁盘大小:100G

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

一、内核编译

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

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

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

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

  

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

二、安卓源码编译

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

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

 

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

  这些系统平台含义如下:

    eng: 工程机,
    user:最终用户机
    userdebug:调试测试机
    tests:测试机

  

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

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

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

FAQ

问题一:出现*****prebuilts/misc/linux-x86/bison/bison.......

解决方法:sudo apt-get install bison
问题二:出现ninja: build stopped: subcommand failed Android 或者GC overhead limit exceeded.

解决方法:修改prebuilts/sdk/tools/jack-admin 文件内容

将JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"  改为
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"

注:-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. 无聊开始玩路由器,入门Tomato固件

    无聊开始玩路由器,入门Tomato固件 在Wordpress上消失了一段时间,其实我最近几个月都比较宅.相信最近大家都了解过新出的一款很NB的路由器叫极路由,功能很强大,8G的可存储空间,可以安装路由 ...

  2. 如何在VPC中安装Ubuntu

    在虚拟机 VPC2007 中安装Ubuntu 方法A:(断网络连接) 1.用载入ISO镜像启动一台标准的 xp设置的虚拟机 2.按 F4 选择启动模式,选择图形模式并确认. 3.按 F6 在启动配置中 ...

  3. 更改centos的网卡名

    Centos6更改网卡名的方法: 1.修改皮配置文件/etc/udev/rules.d/70-persistent-net.rules # This file was automatically ge ...

  4. Storm实践(二):集群搭建

    集群规划 角色 IP hostname nimbus 192.168.100.101 dda supervisor 192.168.100.102 ddb supervisor 192.168.100 ...

  5. 微软Blazor组件发布,DevExpress v19.1.8中可用:Charts新功能

    点击获取DevExpress v19.2.3最新完整版试用下载 DevExpress UI for Blazor在v19.1.8中可用,此次更新发布包括DevExpress Blazor组件的主要功能 ...

  6. __slots__节约空间

    1.为什么要使用__slots__ Python 使用 dicts(hash table)缓存大量的静态资源(属性). 我们最近在Image类中,用仅仅一行__slots__代码,改变成使用tuple ...

  7. POJ-2752-Seek the Name(KMP, 循环节)

    链接: https://vjudge.net/problem/POJ-2752#author=0 题意: 给定若干只含小写字母的字符串(这些字符串总长≤400000),在每个字符串中求出所有既是前缀又 ...

  8. 浅析flex 布局

    Flex基本概念: 容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis).主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end: ...

  9. 前端Web浏览器基于Flash如何实时播放监控视频画面(三)之使用ffmpeg‘推流’

    本片文章只是起到抛砖引玉的作用,能从头到尾走通就行,并不做深入研究.为了让文章通俗易懂,尽量使用白话描述. 0x001: 下载ffmpeg 开源免费的推流软件有很多,这里以 ffmpeg 为例.ffm ...

  10. canvas小实验

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...