Android O编译环境搭建,基于ubuntu16.04

公司上一个Android 5.1的项目完成了,编译环境使用的是同事配置好的ubuntu 12.04。目前准备做Android O的项目,然而下载了Android O的源码,编译发现有一堆的错误。网上查了一下Android O的编译环境和Android 5.1的还是有差异的。自己从新下载安装了ubuntu 16.04,摸索了一下,总结出下边的编译环境搭建方法,给大家参考一下。如有不对的地方,还请各位大神提出。


1、配置java1.8

udo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo update-alternatives --config java        选择java的版本
sudo update-alternatives --config javac      选择javac的版本

java –version                        查看java版本

 

2、编译软件安装

      sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386libgl1-mesa-dev g++-multilib

sudo apt-get install tofrodos python-markdown libxml2-utils xsltproczlib1g-dev:i386

sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev

sudo apt-get install git-core gnupg flex bison gperfbuild-essential 

sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib

sudo apt-get install libc6-dev-i386

sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev

sudo apt-get install lib32z-dev ccache

sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

sudo apt-get install libssl-dev

 

 

3、编译时出现out of memory error

[ 82% 72369/88250] Building with Jack:out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex

FAILED:out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex

/bin/bashout/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex.rsp

Out of memory error (version 1.3-rc6'Douarn' (441800 22a11d4b264ae70e366aed3025ef47362d1522bb [email protected])).

Java heap space.

Try increasing heap size with java option'-Xmx'.

Warning: This may have produced partial orcorrupted output.

[ 82% 72372/88250] ccout/soong/.intermediates/external/llvm/lib/CodeGen/libLLVMCodeGen/android_arm64_armv8-a_static_core/obj/external/llvm/lib/CodeGen/LiveVariables.o

ninja: build stopped: subcommand failed.

22:57:57 ninja failed with: exit status 1

make: *** [run_soong_ui] Error 1

解决方法:

1、修改Jack的配置文件prebuilts/sdk/tools/jack-admin

  这是一个管理Jackshell脚本,找到start-server函数,直接修改其启动参数,由原来的

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"

  此时Jack服务器仍然在后台执行,所以我们需要将其停止,然后重启启动(make会自动启动Jack服务器)才能使得修改后的参数生效。

  我们执行下面的命令此时Jack服务器仍然在后台执行,所以我们需要将其停止,然后重启启动(make会自动启动Jack服务器)才能使得修改后的参数生效。

  我们执行下面的命令:

#先停止服务

./prebuilts/sdk/tools/jack-admin stop-server

#重新开始服务

./prebuilts/sdk/tools/jack-admin start-server


整好环境后,make -j16,第二天来到就出现#### make completed successfully (59:36 (mm:ss)) ####

大吉大利,今晚吃鸡

你可能感兴趣的:(Android,JAVA,总结)