Android系统源码编译参考资料

官方Android编译文档:https://source.android.com/setup/create/coding-tasks

https://blog.csdn.net/Yoryky/article/details/81813717 (我是主要参照这个来搞的,补充一下:cd .repo/manifests.git/,git branch -a 查看只有default分支,需要 git fetch)

https://www.jianshu.com/p/88d84dd7abd4 (这个挺简洁的博客)

实践

一、安装编译环境中途遇到的问题

前3个安装包有点大,可能会比较费时间。安装过程中会有失败的情况,重新继续安装即可。

1. sudo apt-get install dpkg-dev libsdl1.2-dev

libesd0-dev 无法定位软件包 libesd0-dev

百度找到的解决办法:https://blog.csdn.net/weixin_34248258/article/details/86028896

1 sudo vim /etc/apt/sources.list //在行尾添加如下两行的内容
2 deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe
3 deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe
注意最后要执行sudo apt-get update && sudo apt-get install dpkg-dev libsdl1.2-dev,否则还是提醒无法定位。

tips:
下载的源码的虚拟机备份之后,再装载然后更新上面的这些可能会报404 Not Found [IP: 91.189.91.24 80]错误

在终端执行sudo apt-get update命令后,重新下载即可。

2.执行. build/envsetup.sh

下载源码没有下载完肯定没有envsetup.sh这个文件。

3.执行lunch指令报:bash: /usr/bin/lunch: 没有那个文件或目录

很大情况是lunch安装的不对,需要正确安装lunch之后再执行一下. build/envsetup.sh指令,然后lunch指令就能生效了。

4.编译Android4.4源码lunch aosp_arm64-eng指令执行失败


原因:4.4源码不支持arm64架构

二、编译中途遇到的问题

1.make j2


这里是指令输错了,应该是make -j2。

重启了一下Ubuntu,继续编译,出现新的问题。

2.recipe for target 'run_soong_ui'

解决办法:在make之前调用export LC_ALL=C
https://blog.csdn.net/qq_21445563/article/details/92077709

3.sizeof (_nl_value_type_LC_TIME[0]))’ ???

调用export LC_ALL=C

4.源码没有下载完就执行make指令报错

/bin/bash: prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++: 没有那个文件或目录
build/kati/Makefile.ckati:88: recipe for target 'out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/dep.o' failed
make: *** [out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/dep.o] Error 127
/bin/bash: prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++: 没有那个文件或目录
build/kati/Makefile.ckati:88: recipe for target 'out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/eval.o' failed
make: *** [out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/eval.o] Error 127

这个问题困扰了我好多天,其实明白人一看日志就能知道问题所在。下面我贴出详细的错误日志:

chenzhang@chenzhang-virtual-machine:~/bin$ make -j8
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=7.1.1
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=
TARGET_2ND_ARCH_VARIANT=
TARGET_2ND_CPU_VARIANT=
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-5.0.0-31-generic-x86_64-with-Ubuntu-18.04-bionic
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=N9F27M
OUT_DIR=out
============================================
prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++   -fno-exceptions -Wno-multichar -m64 -Wa,--noexecstack -fPIC -no-canonical-prefixes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -O2 -g -fno-strict-aliasing -DNDEBUG -UDEBUG  -D__compiler_offsetof=__builtin_offsetof -Werror=int-conversion -Wno-reserved-id-macro -Wno-format-pedantic -Wno-unused-command-line-argument   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 -fstack-protector-strong    --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -target x86_64-linux-gnu   -Wsign-promo  -Wno-inconsistent-missing-override   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8 -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/x86_64-linux -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/backward -target x86_64-linux-gnu -c -std=c++11 -g -W -Wall -MMD -MP -O -DNOLOG -march=native -o out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/affinity.o build/kati/affinity.cc
prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++   -fno-exceptions -Wno-multichar -m64 -Wa,--noexecstack -fPIC -no-canonical-prefixes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -O2 -g -fno-strict-aliasing -DNDEBUG -UDEBUG  -D__compiler_offsetof=__builtin_offsetof -Werror=int-conversion -Wno-reserved-id-macro -Wno-format-pedantic -Wno-unused-command-line-argument   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 -fstack-protector-strong    --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -target x86_64-linux-gnu   -Wsign-promo  -Wno-inconsistent-missing-override   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8 -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/x86_64-linux -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/backward -target x86_64-linux-gnu -c -std=c++11 -g -W -Wall -MMD -MP -O -DNOLOG -march=native -o out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/command.o build/kati/command.cc
prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++   -fno-exceptions -Wno-multichar -m64 -Wa,--noexecstack -fPIC -no-canonical-prefixes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -O2 -g -fno-strict-aliasing -DNDEBUG -UDEBUG  -D__compiler_offsetof=__builtin_offsetof -Werror=int-conversion -Wno-reserved-id-macro -Wno-format-pedantic -Wno-unused-command-line-argument   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 -fstack-protector-strong    --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -target x86_64-linux-gnu   -Wsign-promo  -Wno-inconsistent-missing-override   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8 -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/x86_64-linux -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/backward -target x86_64-linux-gnu -c -std=c++11 -g -W -Wall -MMD -MP -O -DNOLOG -march=native -o out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/dep.o build/kati/dep.cc
/bin/bash: prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++: 没有那个文件或目录
build/kati/Makefile.ckati:88: recipe for target 'out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/affinity.o' failed
make: *** [out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/affinity.o] Error 127
make: *** 正在等待未完成的任务....
/bin/bash: prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++: 没有那个文件或目录
build/kati/Makefile.ckati:88: recipe for target 'out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/dep.o' failed
make: *** [out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/dep.o] Error 127
prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++   -fno-exceptions -Wno-multichar -m64 -Wa,--noexecstack -fPIC -no-canonical-prefixes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -O2 -g -fno-strict-aliasing -DNDEBUG -UDEBUG  -D__compiler_offsetof=__builtin_offsetof -Werror=int-conversion -Wno-reserved-id-macro -Wno-format-pedantic -Wno-unused-command-line-argument   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 -fstack-protector-strong    --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -target x86_64-linux-gnu   -Wsign-promo  -Wno-inconsistent-missing-override   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8 -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/x86_64-linux -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/backward -target x86_64-linux-gnu -c -std=c++11 -g -W -Wall -MMD -MP -O -DNOLOG -march=native -o out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/file_cache.o build/kati/file_cache.cc
prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++   -fno-exceptions -Wno-multichar -m64 -Wa,--noexecstack -fPIC -no-canonical-prefixes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -O2 -g -fno-strict-aliasing -DNDEBUG -UDEBUG  -D__compiler_offsetof=__builtin_offsetof -Werror=int-conversion -Wno-reserved-id-macro -Wno-format-pedantic -Wno-unused-command-line-argument   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 -fstack-protector-strong    --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -target x86_64-linux-gnu   -Wsign-promo  -Wno-inconsistent-missing-override   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8 -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/x86_64-linux -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/backward -target x86_64-linux-gnu -c -std=c++11 -g -W -Wall -MMD -MP -O -DNOLOG -march=native -o out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/file.o build/kati/file.cc
prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++   -fno-exceptions -Wno-multichar -m64 -Wa,--noexecstack -fPIC -no-canonical-prefixes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -O2 -g -fno-strict-aliasing -DNDEBUG -UDEBUG  -D__compiler_offsetof=__builtin_offsetof -Werror=int-conversion -Wno-reserved-id-macro -Wno-format-pedantic -Wno-unused-command-line-argument   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 -fstack-protector-strong    --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -target x86_64-linux-gnu   -Wsign-promo  -Wno-inconsistent-missing-override   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8 -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/x86_64-linux -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/backward -target x86_64-linux-gnu -c -std=c++11 -g -W -Wall -MMD -MP -O -DNOLOG -march=native -o out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/eval.o build/kati/eval.cc
/bin/bash: prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++: 没有那个文件或目录
prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++   -fno-exceptions -Wno-multichar -m64 -Wa,--noexecstack -fPIC -no-canonical-prefixes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -O2 -g -fno-strict-aliasing -DNDEBUG -UDEBUG  -D__compiler_offsetof=__builtin_offsetof -Werror=int-conversion -Wno-reserved-id-macro -Wno-format-pedantic -Wno-unused-command-line-argument   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 -fstack-protector-strong    --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -target x86_64-linux-gnu   -Wsign-promo  -Wno-inconsistent-missing-override   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8 -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/x86_64-linux -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/backward -target x86_64-linux-gnu -c -std=c++11 -g -W -Wall -MMD -MP -O -DNOLOG -march=native -o out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/exec.o build/kati/exec.cc
/bin/bash: prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++: 没有那个文件或目录
build/kati/Makefile.ckati:88: recipe for target 'out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/command.o' failed
make: *** [out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/command.o] Error 127
/bin/bash: prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++: 没有那个文件或目录
build/kati/Makefile.ckati:88: recipe for target 'out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/file_cache.o' failed
make: *** [out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/file_cache.o] Error 127
build/kati/Makefile.ckati:88: recipe for target 'out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/file.o' failed
make: *** [out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/file.o] Error 127
prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++   -fno-exceptions -Wno-multichar -m64 -Wa,--noexecstack -fPIC -no-canonical-prefixes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -O2 -g -fno-strict-aliasing -DNDEBUG -UDEBUG  -D__compiler_offsetof=__builtin_offsetof -Werror=int-conversion -Wno-reserved-id-macro -Wno-format-pedantic -Wno-unused-command-line-argument   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 -fstack-protector-strong    --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -target x86_64-linux-gnu   -Wsign-promo  -Wno-inconsistent-missing-override   --gcc-toolchain=prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 --sysroot prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8 -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/x86_64-linux -isystem prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/include/c++/4.8/backward -target x86_64-linux-gnu -c -std=c++11 -g -W -Wall -MMD -MP -O -DNOLOG -march=native -o out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/expr.o build/kati/expr.cc
/bin/bash: prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++: 没有那个文件或目录
build/kati/Makefile.ckati:88: recipe for target 'out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/eval.o' failed
make: *** [out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/eval.o] Error 127
/bin/bash: prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++: 没有那个文件或目录
build/kati/Makefile.ckati:88: recipe for target 'out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/exec.o' failed
make: *** [out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/exec.o] Error 127
/bin/bash: prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++: 没有那个文件或目录
build/kati/Makefile.ckati:88: recipe for target 'out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/expr.o' failed
make: *** [out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/expr.o] Error 127

上面日志分析:

/bin/bash: prebuilts/clang/host/linux-x86/clang-2690385/bin/clang++: 没有那个文件或目录
recipe for target 'out/host/linux-x86/obj/EXECUTABLES/ckati_intermediates/affinity.o' failed

那么问题就是:在用clang++编译affinity.oyp 这个文件时找不到clang++这个文件
其实,这个就是源码没有下载全导致的问题。

5.make执行失败-make版本不匹配


解决办法:https://blog.csdn.net/u011784994/article/details/80024986

各个版本的make下载地址:
http://blog.sina.com.cn/s/blog_5842daa30101efsu.html

http://fr2.rpmfind.net/linux/rpm2html/search.php?query=make&submit=Search+...

make低版本安装(我用的这种办法解决)
https://blog.csdn.net/Faith_Leeo/article/details/81329018
可能会遇到下面的问题:https://blog.csdn.net/daoliting5268/article/details/84503064
注意先不要卸载原有的高版本的make,因为低版本的3.81或者3.82安装过程中还需要用到make指令!

注意使用./make -version检查是否安装成功。

6.make执行失败-JDK版本不匹配


上面的make问题解决了,再执行make指令又会出现上面的问题,提示很明显,不支持OpenJDK,要使用Sun/Oracle JDK。
卸载OpenJDK:

apt-get remove openjdk*

Sun/Oracle JDK安装:https://www.jianshu.com/p/fd5f259b1eed

将JDK替换了又提示

JDK版本必须是1.6,但是我的是1.8。

下载指定版本的JDK:https://www.oracle.com/corporate/contact/help.html (还要创建Orace账户,创建了还登录不了,坑爹)

JDK1.6配置成功,编译正常进行。

中途出现了个错误:“段错误 (核心已转储) ”
网络上的解决办法:https://blog.csdn.net/dahailantian1/article/details/78584673

7.带源码的虚拟机备份再打开后源码无法编译

为了防止在编译途中出现问题,导致ubuntu无法启动,在android源码下载成功后,我就对整个虚拟机做了备份,下次再打开编译时,就会出现总是,报各种引用找不到。这个总是估计是在备份虚拟机时,由于源码的部分文件路径太长导致的。所以建议“源码单独备份,不要和虚拟机一起。”,后面我把源码删除了,重新下载编译,还是报错,真是日了鬼了。

8.编译过程中提示虚拟机磁盘空间不足

编译到一大半,忽然提示虚拟机容量不足,然后ubuntu自动关机了。

执行压缩尝试扩展点内存,磁片整理提示删除快照,还好我有2个快照占了20几个G的容量,把它们删除掉就好了,否则虚拟机真的就启动不了,然后再把之前编译的其它版本的文件删除掉,这样容量扩展到60G了。

9.编译镜像提示"vmdk 所在的文件系统已满"

其实这时候我的虚拟机分配的硬盘空间是绰绰有余的,只是系统可用空间太小,也就是虚拟机所在的磁盘(windows上的)太小了。将虚拟机拷贝到大磁盘空间,或者删除当前磁盘一些没有用的大文件。

10.编译镜像提示"memory_program_cache.cc: error: base operand of '->' is not a pointer"


https://blog.csdn.net/qq_27062249/article/details/53642444这篇文章受到启发。

这个是由于虚拟机的位置被移动之前已经编译了一半没有成功,移动位置后再次编译就会出现这个错误。把out/target里的目录和文件删除重新编译即可,最好先执行make clean再执行编译。

三、编译成功

  • 8.0源码编译成功

    看这篇https://www.jianshu.com/p/2beae17c9b12
    博客的介绍,这样就算源码编译成功了。
    编译好的镜像位于source/out/target/product/下,lunch时使用的哪种架构,就会生成哪种构架的文件夹。(注意lunch会用到JDK,JAVA_HOME环境变量要事先配置好)

    generic文件夹是arm架构,generic_x86则是x86架构。

  • 4.4源码编译成功

    编译好的镜像为source/out/target/product/system.img。

编译成功后的镜像文件介绍
https://blog.csdn.net/mylinchi/article/details/79768660

编译后的目录介绍
https://blog.csdn.net/zhouxia_288/article/details/37333659

Android源代码所有目录生成的Target(编译生成文件反查)
https://blog.csdn.net/weixin_33912638/article/details/85628261

四、运行系统镜像

直接输入emulator,会报指令找不到,解决办法如下:
https://blog.csdn.net/u012452490/article/details/53427412
注意模拟器的启动很慢,请耐心等待。。。

  • 制作启动脚本
    避免频繁的输入那几个指令,可以做一个脚本,放到源码的根目录运行。

    source ./build/envsetup.sh
    lunch
    echo -e "\n"
    emulator

    emulator指令可能会报一个错误,分区大小不够不提示类似816M>200M信息
    https://blog.csdn.net/zyfzhangyafei/article/details/90410494

  • 模拟器启动慢优化
    TODO
  • 模拟器桌面应用卡顿优化
    TODO
    不解决模拟器卡顿的问题,源码修改后生成我镜像,跑起来验证的话将是十分的蛋痛。
    有一种解决办法,就是搞个破手机,把system.img刷进去就行了,刷机请参照我的另外一篇博客:http://xinyiworld.top/wordpress_it/?p=4577

  • 调试emulator

    emulator -debug all
  • 何run一个apk到模拟器上
    SDK环境部署好后,adb devices,即可看到模拟器已经识别了,用adb命令即可安装apk。

注意,重新生成system.img之后,再运行模拟器,原来用户装的apk会不复存在。


0 条评论

发表回复

您的电子邮箱地址不会被公开。