Linux16.04编译Android 7.1.x

楼主使用的是别人提供的压缩包,所以仅供参考。

一.解压tar.gz*分卷压缩包

  • cat filename.tar.gz* | tar -xzf

当然windows下的合并命令是

  • copy /b  filename.tar.gz*  filename.tar.gz

二.修改各级makefile与shell权限

  • chmod 777 `find ./ -name *.mk`;
  • chmod 777 `find ./ -name *.sh`

三.设置JAVA环境

Linux16.04编译Android 7.1.x

此时要编译源码7.1.2版本,Ubuntu下要求java环境为OpenJDK8。

  • //正常来说命令行配置jre即可
  • sudo apt-get install openjdk-8-jre
  • //但我同时安装了jdk
  • sudo apt-get install openjdk-8-jdk 

a、执行命令查看是否安装成功:

  • java -version
  • javac -version

        如果安装过程没有出错,那么此时应该能够看到openjdk1.8环境。

b、设置python

        ubuntu中自带python环境,且版本为2.7,可通过执行python命令查看。

c、设置gnu make

        ubuntu中自带gnu make,版本为4.1,但由于我们此时编译Android版本为7.1,可以在该版本执行,因此也不作改变。可通过执行make命令查看版本。
原文:https://blog.****.net/u012195899/article/details/82078384 

d、安装需要的库文件

  • sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 
  • sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib 
  • sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 
  • sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
  • sudo apt-get install git-core gnupg flex bison gperf build-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

e、修改 .bashrc文件

  在终端中执行下面的命令,在.bashrc文件末尾添加:export USE_CCACHE = 1

  • echo export USE_CCACHE=1 >> ~/.bashrc

f、为了提高编译效率,设置编译器高速缓存:

  • prebuilts/misc/linux-x86/ccache/ccache -M 50G

g、

为了避免编译时出现“Try increasing heap size with java option Xmx<size>”错误,需要修改JACK_SERVER_VM_ARGUMENTS配置。修改prebuilts/sdk/tools/jack-admin文件,在JACK_SERVER_VM_ARGUMENTS的后面添加-Xmx4096M。一共有2处,都要进行修改。

Linux16.04编译Android 7.1.x

  修改完成以后,记得重启一下jack server,执行下面两条命令即可,一定要执行下面的命令,否则上面的修改可能不生效:

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

编译问题记录: 
 FAILED: setup-jack-server 
 Jack server installation not found 
 到prebuilts/sdk/tools 目录下执行一下这个命令:./jack-admin install-server jack-launcher.jar jack-server-4.*.ALPHA.jar 
 jack-launcher.jar,jack-server-4.*.ALPHA.jar这两个文件的名字视 prebuilts/sdk/tools 目录下的文件名而定
 

四、开始编译
进入源码根目录

a、初始化编译环境,执行以下命令,注意.和build之间有空格:

  • . build/envsetup.sh

b、使用lunch选择编译目标

  • lunch

执行此命令后,会出现当前可以编译的版本其对应的数字

Linux16.04编译Android 7.1.x

运行版本查看链接:https://source.android.google.cn/source/running

在该链接中查看手机类型,选择对应的运行版本,这里我的手机是nexus5x,希望编译带有root权限的可调试版本,因此选择userdebug类型,选择aosp-bullhead-userdebug对应的数字即可。

c、执行编译

make -j8
这里的工作线程数可以设置为物理内核数-逻辑内核数之间的数字,我的电脑物理内核为4,逻辑内核数为8,因此设置-j参数为8.
 

暂时更新到这里,具体参考链接为

Ubuntu16.04编译Android源码7.1.2和4.4及踩坑 - 九天 - ****博客  https://blog.****.net/u012195899/article/details/82078384

Ubuntu 16.04编译Android 7.1.2 - TPrime.A - 博客园  https://www.cnblogs.com/tsts/p/7554703.html