环境
Ubuntu 20.04.3
python 2.7.11
android 7.1.2 r8
lg nexus 5x
安装依赖 初始化依赖 1 sudo apt-get install -y curl python git
repo 安装 1 2 3 mkdir ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo sudo chmod a+x ~/bin/repo
配置 1 2 echo "PATH=~/bin:$PATH" >> ~/.bashrc echo "export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'" >> ~/.bashrc
git 配置 1 2 git config --global user.email "you@example.com" git config --global user.name "Your Name"
android 仓库初始化 1 2 3 4 5 6 7 8 mkdir AOSP cd AOSP # 北方用 清华源 https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest # 南方用 华中科技大学源 git://mirrors.ustc.edu.cn/aosp/platform/manifest # 此命令获取的是最新的 android 源码 android 12 (2021-11-23) # repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest # 获取 android 7.1.2_r8 源码 repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-7.1.2_r8 --depth=1 --platform=auto
同步代码 1 2 # 防止同步失败 记入同步过程日志 sudo repo sync -c -j4 2>&1 | tee sync.log
目前位置一切顺利 准备编译
安装系统依赖 安装 jdk 1 sudo apt-get install -y openjdk-8-jdk
安装编译依赖 为啥要一行行, 方便排错哈
1 2 3 4 5 6 7 8 sudo apt-get install -y python-minimal libpython-stdlib python sudo apt-get install -y libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib sudo apt-get install -y bison gperf build-essential libncurses5:i386 sudo apt-get install -y tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 sudo apt-get install -y dpkg-dev libsdl1.2-dev libesd0-dev sudo apt-get install -y git-core gnupg zip curl zlib1g-dev gcc-multilib sudo apt-get install -y libc6-dev-i386 x11proto-core-dev libx11-dev sudo apt-get install -y unzip m4 lib32z-dev ccache libssl-dev
android 编译 编译初始化 1 source build/envsetup.sh
选择编译版本 此处要选择编译的版本 比如 aosp_arm-eng
, 还是aosp_arm64-eng
,此次实验机为 nexus 5x
就选 18 啦
执行编译 1 2 3 4 5 sudo make -j12 2>&1 | tee build.log # 清除历史编译 如果没问题 请不要运行 否则全部重新编译啦 sudo make clean
最后来张完成纪念..这命令熟悉的让人心疼…别问 爱过…
还没有编译驱动哦,这个帖子就不说刷机的事了 等得空补上
遇到的问题 错误1: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory 在 Ubuntu 20.04 上 安装 libncurses5:i386
不会 新建 libncurses.so.5
来个软连接即可
1 2 3 4 5 6 # error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory sudo apt-get install -y libncurses5:i386 # 确定安装位置 whereis libncurses.so sudo ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5 # /usr/lib/x86_64-linux-gnu/libncurses.so.6
错误 2: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory 一样 新系统上面不会建立 libtinfo.so.5
需要手动创建一个
1 2 3 4 5 # error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory # 先看看安装过没 whereis libtinfo # libtinfo: /usr/lib/x86_64-linux-gnu/libtinfo.a /usr/lib/x86_64-linux-gnu/libtinfo.so sudo ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so /usr/lib/x86_64-linux-gnu/libtinfo.so.5
错误 3: flex 相关错误 这个问题很奇妙 apt-get
安装的 flex
版本为 2.6.35
和源码包里的版本不同 错误也千奇百怪
解决方案是 用 源码包中 携带的 flex-2.5.39
重新编译一份到系统即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # FAILED: /bin/bash -c "prebuilts/misc/linux-x86/flex/flex-2.5.39 -oout/host/linux-x86/obj/STATIC_LIBRARIES/libaidl-common_intermediates/aidl_language_l.cpp system/tools/aidl/aidl_language_l.ll" flex-2.5.39: loadlocale.c:130:_nl_intern_locale_data: ?? 'cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' ??? # ---------------------- whereis flex # 卸载已安装 flex sudo apt-get --purge remove flex # 使用源码包下的flex 重新编译 cd /home/super_power/code/AOSP/android_7.1.2_r8/prebuilts/misc/linux-x86/flex tar zxf flex-2.5.39.tar.gz cd flex-2.5.39 ./configure sudo make -j12 sudo make install # 设置flex 软连接 sudo ln -s /usr/local/bin/flex /home/super_power/code/AOSP/android_7.1.2_r8/prebuilts/misc/linux-x86/flex/flex-2.5.39
错误 4: jack-server 错误 手动删除 java.security 中 对 ssl 证书的校验 重新编译即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # 连接 jack 服务器错误 Communication error with Jack server (35), try 'jack-diagnose' or see Jack server log # ssl 证书错误哈 SSL error when connecting to the Jack server. Try 'jack-diagnose' SSL error when connecting to the Jack server. Try 'jack-diagnose' # ------------------------------- # 确定 jack-server 是否启动 ps aux|grep jack-server # 结束 jack-server 进程 重新启动编译即可 ./prebuilts/sdk/tools/jack-admin kill-server # 删除 java 配置文件中的证书校验 cd /etc/java-8-openjdk/security/ sudo cp -a java.security java.security.bak # 找到TLSv1这行,把TLSv1, TLSv1.1,删除后保存 # jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \ sudo vi /etc/java-8-openjdk/security/java.security # 保险起见手动结束进程 sudo pkill -f jack-server # 继续编译