1. 安装编译环境依赖包:
sudo apt-get install git-core gnupg flex bison ccache gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libc6-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z1-dev libgl1-mesa-dev g++-multilib g++-4.8-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc libc6-dev-i386 lib32z1 lib32ncurses5 lib32bz2-1.0 lib32readline-gplv2-dev wine
在 Ubuntu16.04 中
libwxgtk2.8-dev 已经升级为 libwxgtk3.0-dev;
lib32bz2-1.0 已经升级为 libbz2-1.0:i386;
lib32readline-gplv2-dev 已经升级为 lib32readline6-dev;
所以:
sudo apt install libwxgtk3.0-dev lib32readline6-dev libbz2-1.0:i386
mingw32 需要在 sudo vi /etc/apt/sources.list添加源:
deb http://us.archive.ubuntu.com/ubuntu trusty main universe
之后如下即可
sudo apt update
sudo apt install mingw32
2. 编译Android 6.0需要open jdk1.7
如果ubuntu版本为16.04可以采用如下方法:
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
若报错:
sudo: add-apt-repository: command not found
解决方法:
sudo apt-get install software-properties-common
3.编译报错:
3.1 报错:
device/mediatek/common/sepolicy/MtkCodecService.te:31:ERROR 'unknown type teei_client_device' at token ';' on line 24805:
#define for mlsconstrain
typeattribute teei_client_device mlstrustedobject;
checkpolicy: error(s) encountered while parsing configuration
out/host/linux-x86/bin/checkpolicy: loading policy configuration from out/target/product/spm188a/obj/ETC/sepolicy.recovery_intermediates/policy_recovery.conf
external/sepolicy/Android.mk:96: recipe for target 'out/target/product/spm188a/obj/ETC/sepolicy.recovery_intermediates/sepolicy.recovery' failed
make: *** [out/target/product/spm188a/obj/ETC/sepolicy.recovery_intermediates/sepolicy.recovery] Error 1
make: *** Waiting for unfinished jobs....
java -jar out/host/linux-x86/framework/dumpkey.jar build/target/product/security/testkey.x509.pem > out/target/product/spm188a/obj/PACKAGING/ota_keys_intermediates/keys
make: *** wait: No child processes. Stop.
#### make failed to build some targets (44:39 (mm:ss)) ####
修改方法(参考:https://discuss.96boards.org/t/build-image-from-source-code-fails/1759/9):
add type teei_client_device dev_type; in teei_daemon.te
remove or comment type teei_client_device dev_type; in the device.te
3.2 报错:
clang: error: linker command failed with exit code 1 (use -v to see invocation)
build/core/host_shared_library_internal.mk:51: recipe for target 'out/host/linux-x86/obj32/lib/libart.so' failed
make: *** [out/host/linux-x86/obj32/lib/libart.so] Error 1
修改方法:
系统使用clang编辑器报的错,将art/build/Android.common_build.mk文件ifneq ($(WITHOUT_HOST_CLANG),true)改为ifeq ($(WITHOUT_HOST_CLANG),false)