Ubuntu 20.04 编译 android 7.1.2 源码
mr00ff

环境

  • 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
#  选择编译版本
lunch

执行编译

1
2
3
4
5
sudo make -j12 2>&1 | tee build.log


# 清除历史编译 如果没问题 请不要运行 否则全部重新编译啦
sudo make clean

最后来张完成纪念..这命令熟悉的让人心疼…别问 爱过…

还没有编译驱动哦,这个帖子就不说刷机的事了 等得空补上

image-20211123210137701


遇到的问题

错误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
# 继续编译
  • 本文标题:Ubuntu 20.04 编译 android 7.1.2 源码
  • 本文作者:mr00ff
  • 创建时间:2021-11-23 20:10:00
  • 本文链接:https://www.sysxo.com/Ubuntu/Ubuntu 20.04 编译 Android 7.1.2 版本.html
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论