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环境
此时要编译源码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处,都要进行修改。
修改完成以后,记得重启一下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
执行此命令后,会出现当前可以编译的版本其对应的数字
运行版本查看链接: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