Ubuntu 16.04编译Android5.1系统源码

Ubuntu 16.04编译Android5.1系统源码

Android 5.1版本也是一个比较大的版本,目前很多盒子还都采用这个版本。Ubuntu 14.04上编译可能遇不了什么问题,但是在Ubuntu 16.04上会遇到一些问题。随着一次次编译Android源码,将其总结起来会比较好。

  1. libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43
  2. public_api.txt:20: error 5: Added public field android.Manifest.permission.BACKUP

不完整编译脚本

以下是脚本,但是第一步需要手动修改,修改这两处之后编译就没有任何错误了

#!/bin/bash
# author: kangear
# e-mail: [email protected]
# only for android 5.1

# export http_proxy=127.0.0.1:
# install from wiki
sudo apt-get -y install bison g++-multilib git gperf libxml2-utils make python-networkx zip flex libncurses5-dev zlib1g-dev gawk minicom git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

# For Jdk 1.7
# sudo add-apt-repository -y ppa:openjdk-r/ppa  
# sudo apt-get -y update   
# sudo apt-get -y install openjdk-7-jdk
export ANDROID_SET_JAVA_HOME=true

# cache
export USE_CCACHE=1

# fix: libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43
# 在./build/core/clang/HOST_x86_common.mk第11行添加如下行:`-B$($(clang_2nd_arch_prefix)HOST_TOOLCHAIN_FOR_CLANG)/x86_64-linux/bin \`
# 这个暂时还不会使用sed来完成,需要手动完成
# Google官方补丁链接:https://android-review.googlesource.com/c/platform/build/+/223100/1/core/clang/HOST_x86_common.mk#17

# fix: public_api.txt:20: error 5: Added public field android.Manifest.permission.BACKUP
# Google官方补丁链接:https://android.googlesource.com/platform/system/core/+/dd060f01f68ee0e633e9cae24c4e565cda2032bd%5E%21
sed -i '427s/memcpy/memmove/' ./system/core/libutils/String8.cpp


# ccache size
prebuilts/misc/linux-x86/ccache/ccache -M 200G

# for nanopi_k2
# 这里需要替换成自己项目的
source build/envsetup.sh
lunch nanopi_k2-userdebug

# make
make -j32

你可能感兴趣的:(Android)