1. 前言
Google自 2021 年 6 月 22 日起,不再支持在 MacOS 上进行Android平台开发。某些芯片厂家提供的Android SDK不支持低版本的Ubuntu(16.04 LTS及以下),故本篇文章以Ubuntu18.04LTS为例来描述Android编译环境的搭建过程。
经测试,AOSP的Android 4.4、Android 5、Android 6、Android 7、Android 9、Android 10系列分支以及Hisilicon、Amlogic、Goke等芯片厂家提供的Android SDK包都可以编译通过。
2. 前期准备
-
一台安装Ubuntu18.04LTS的主机或者虚拟机。
-
安装jdk-6u45、OpenJDK7、OpenJDK8。
安装路径:
/usr/lib/jvm
-
软件源准备,建议使用清华开源镜像或者阿里云开源镜像,替换前先备份原始文件。
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
-
根据需要卸载Libreoffice和亚马逊快捷方式。
sudo apt-get remove --purge libreoffice* sudo apt-get remove unity-webapps-common
-
更新软件及工具且卸载过时的软件工具。
sudo apt-get update sudo apt-get dist-upgrade sudo apt-get autoremove
3. 编译环境搭建
-
安装基本工具
sudo apt-get install samba samba-common system-config-samba python-glade2 tree vim exuberant-ctags openssh-server
-
安装SDK编译依赖工具
-
Ubuntu14.04LTS
sudo apt-get install make gcc g++ gksu patch texinfo libncurses-dev git-core gnupg flex bison gperf libsdl-dev libesd0-dev zip ncurses-dev zlib1g-dev zlib1g-dev:i386 valgrind libgtk2.0-0:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386 libidn11:i386 gstreamer0.10-pulseaudio:i386 gstreamer0.10-plugins-base:i386 gstreamer0.10-plugins-good:i386 libxml2-utils xsltproc g++-multilib gcc-multilib git python-networkx build-essential curl libc6-dev libncurses5-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev:i386 mingw32 openjdk-6-jdk tofrodos python-markdownxsltproc libxext-dev:i386 subversion gawk cryptsetup cmake gettext libssl-dev unzip dosfstools device-tree-compiler dh-autoreconf libudev-dev libusb-dev libusb-1.0-0-dev u-boot-tools
-
Ubuntu18.04LTS
sudo apt-get install make gcc g++ zip curl valgrind libc6-dev patch texinfo libncurses-dev git git-core gnupg flex bison gperf libsdl1.2-dev libncurses5-dev libncurses5-dev:i386 zlib1g-dev zlib1g-dev:i386 libgtk2.0-0:i386 libpangox-1.0-0:i386 x11proto-core-dev libxml2-utils xsltproc gcc-multilib g++-multilib lib32z1 python-networkx libx11-dev libx11-dev:i386 lib32readline6-dev lib32z-dev libgl1-mesa-dev libgl1-mesa-dev:i386 tofrodos python-markdown libxext-dev:i386 libpangoxft-1.0-0:i386 libidn11:i386 u-boot-tools cryptsetup cmake lib32ncurses5 lib32ncurses5-dev libudev-dev libusb-dev libusb-1.0-0-dev build-essential subversion gawk gettext libssl-dev unzip dosfstools device-tree-compiler dh-autoreconf libswitch-perl liblz4-tool pkg-config intltool libglib2.0-dev openjdk-8-jdk
-
-
配置vim
set number set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 set termencoding=utf-8 set encoding=utf-8 set shiftwidth=4 set softtabstop=4 set tabstop=4 set expandtab set autoindent
-
配置samba
-
添加samba用户
sudo smbpasswd -a newuser
-
配置共享目录
[newuser] comment = newuser Drivers path = /home/newuser browseable = yes valid users = newuser writable = yes
-
-
配置JDK环境变量
# Java JDK Environment export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45 #export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_144 #export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 #export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
切换编译环境,输入以下命令后选择
NO
sudo dpkg-reconfigure dash
-
配置umask
/etc/profile
和~/.bashrc
中分别添加umask 022
-
清理过时软件
sudo apt-get autoremove
-
配置交换分区
# 切换root用户 sudo su # 创建交换分区的文件为16GB dd if=/dev/zero of=/home/swapfile bs=1M count=16384 # 设置交换分区文件,建立swap的文件系统 mkswap /home/swapfile # 启用swap文件 swapon /home/swapfile
设置完成后,需要在
/etc/fstab
中添加# 开机挂载交换分区 /home/swapfile swap swap defaults 0 0
-
重启
reboot
4. 注意事项
-
编译低版本注意事项
Android5.0、Android6.0等版本编译报错:
unsupported reloc 42、unsupported reloc 43
等错误。Ubuntu18.04编译低版本Android注意事项
-
make api-stubs-docs-update-current-api问题
Android10.0编译 make api-stubs-docs-update-current-api问题
-
Ubuntu提示W: Possible missing firmware xxx解决方法
Ubuntu提示W: Possible missing firmware xxx解决方法