Ubuntu 18 android 5.1.0源码编译

源码编译之前请先下载源码 下载方法参照:https://blog.csdn.net/bgc525725278/article/details/84547775

一、编译步骤

1、进入下载的源码目录(确认当前分支是你的目标分支),输入如下命令:

source build/envsetup.sh

Ubuntu 18 android 5.1.0源码编译_第1张图片

2、选择编译的room类型,输入如下命令:

lunch

Ubuntu 18 android 5.1.0源码编译_第2张图片

说明:所有编译目标都采用 BUILD-BUILDTYPE形式,其中 BUILD 是表示特定功能组合的代号

BUILDTYPE 是以下类型之一: 
这里写图片描述 
三者具体差异Google也在官方文档中给出了说明:https://source.android.com/source/building 
这里写图片描述 
模拟器一般选eng,调试功能全开。 
调试真机的话选userdebug 。 
发行最终版本用user 。

官方给出了一份自己出厂设备的代号和编译配置选项 
这里写图片描述

 根据需要选择不同的版本进行编译。在模拟器上运行可以直接:lunch aosp_arm-eng

3、开始编译,输入如下命令:

make -j8

注:使用make命令来编译代码,为了提高编译速度,GNU Make 可以借助 -jN 参数处理并行任务,通常使用的任务数 N 介于编译时所用计算机上硬件线程数的 1-2 倍之间 使用命令:

cat /proc/cpuinfo | grep processor

N=cpu个数×2

4、坐等编译完成

Ubuntu 18 android 5.1.0源码编译_第3张图片

5、启动模拟器

emulator

 

二、编译过程中遇到的问题

1、error while loading shared libraries: libncurses.so.5    
解决方法:sudo ln -s /lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/libncurses.so.5

2、找不到java,javac,javah,javap等命令

解决方法:

sudo ln -s /home/jdk/bin/jar             /bin/jar
 sudo ln -s /home/jdk/bin/java          /bin/java
 sudo ln -s /home/jdk/bin/javac        /bin/javac
 sudo ln -s /home/jdk/bin/javah       /bin/javah
 sudo ln -s /home/jdk/bin/javadoc  /bin/javadoc
 sudo ln -s /home/jdk/bin/javap      /bin/javap

3、make: *** [build/core/binary.mk:576: out/host/linux-x86/obj32/EXECUTABLES/aidl_intermediate/aidl_language_l.cpp] 已放弃 (core dumped)
make: *** 正在等待未完成的任务....

解决方法:export LC_ALL=C

4、libnativehelper/JniInvocation.cpp:45: error: unsupported reloc 43

解决方法:cp /usr/bin/ld.gold          prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld

5、android源码编译之后emulator: ERROR: No initial system image for this configuration
问题原因是由于没有编译成功

解决方法:重新编译

6、build/core/main.mk:518: hardware/qcom/sdm845/Android.mk: 没有那个文件或目录

原因:分支中代码checkout的有问题,重新切分之

repo forall -c git reset --hard
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.0.0_r1  //自己的目标分支
repo sync

你可能感兴趣的:(android)