0、背景
最近编译了公司的两个安卓项目,由于第一次接触安卓项目编译,花了大量时间精力去解决,现总结解决思路如下:
通常,编译过程中,linux在命令端实时显示出编译提示信息,并在编译异常停止时在最后一行提示错误信息。如图1所示:
- 图1 编译不成功,最后的提示信息却不一定是问题的核心
然而我跟着提示一顿百度也没有找到错误解决方法。咨询有经验的工程师后,一般的做法是:
分析整个编译过程的提示信息,具体流程如下。
1、保存所有与编译有关的信息(log)
. build/envsetup.sh (最前面有 “.”)
HLTE321E-userdebug 2>&1 | tee log1030_v1.log
保存结果,如图2所示:
- 图2 保存整个编译过程输出信息(log)
2.、在log中搜索 “error”,“failed”,“cannot”等关键词,
找编译错误提示信息
- 图3 在log中搜索错误信息,笔者按照这个提示最终解决了问题
error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
找编译错误提示信息
方法2:编译过程会自动保存,直接找到,比搜索简单
- 图4 在编译输出文档中找到编译错误提示信息
3【解决方法】:需要安装 libz.so.1 参考链接
安装画圈的库
- 图5 搜索libz.so.1所在的库并安装
安装代码:
sudo apt-get install lib32z1
sudo apt-get install libx32z1
sudo apt-get install zlib1g
4、总结
编译错误是复杂且关联的,需要分析整个编译过程的信息,最好保存下log。
错误提示信息有时可在工程输出文件夹寻找。