deepin20编译Android源码7.1.2和4.4及踩坑

一、前言
        本文不涉及源码下载过程,主要记录自己的编译源码过程及其中遇到的问题,并最终运行在真机上。

二、预置环境
        1、ubuntu16.04,8G内存,2T硬盘

        2、手机真机nexus 5x, nexus 5

        3、编译源码版本为android-7.1.2_r18和android-4.4_r1两个

        版本选择参考链接:https://source.android.google.cn/setup/start/build-numbers#source-code-tags-and-builds,根据你的真机型号选择对应的源码版本。

三、编译要求
        由于两个源码版本不同,本文依次编译。

1、编译android-7.1.2版本
1)要求
参考链接:https://source.android.google.cn/setup/build/requirements

需要jdk、python、gnu make、git

由于本文在下载源码过程中已经配置了git,因此略过。

a、设置java环境

        如图所示,此时要编译源码7.1.2版本,Ubuntu下要求java环境为OpenJDK8

        执行命令安装:

//正常来说命令行配置jre即可
sudo apt-get install openjdk-8-jre
//但我同时安装了jdk
sudo apt-get install openjdk-8-jdk
        执行命令查看是否安装成功:

java -version
javac -version
        如果安装过程没有出错,那么此时应该能够看到openjdk1.8环境。

b、设置python

        ubuntu中自带python环境,且版本为2.7,可通过执行python命令查看。

c、设置gnu make

        ubuntu中自带gnu make,版本为4.1,但由于我们此时编译Android版本为7.1,可以在该版本执行,因此也不作改变。可通过执行make命令查看版本。

2)下载驱动
        因为本文编译系统最终需要刷到真机上,因此需要下载对应的驱动。google提供了 Nexus 和 Pixel 设备的驱动文件,链接:https://developers.google.cn/android/drivers,在链接中,可以根据下载源码的版本名称,搜索到对应的驱动。本文在该7.1.2版本中直接下载编译好的镜像文件,查看版本选择时的链接,7.1.2_r18对应的细分版本为N2G47Z,在https://developers.google.cn/android/images中搜索N2G47Z,找到对应压缩包下载。

3)安装需要的库文件
sudo apt install g++-multilib
sudo apt install gperf
sudo apt install libxml2-utils
sudo apt install curl
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo apt-get install m4
4)开始编译
进入源码根目录

a、初始化编译环境,执行以下命令,注意.和build之间有空格:

. build/envsetup.sh
b、使用lunch选择编译目标

lunch
执行此命令后,会出现当前可以编译的版本其对应的数字

运行版本查看链接:https://source.android.google.cn/source/running

在该链接中查看手机类型,选择对应的运行版本,这里我的手机是nexus5x,希望编译带有root权限的可调试版本,因此选择userdebug类型,选择aosp-bullhead-userdebug对应的数字即可。

c、执行编译

time make -j8
这里的工作线程数可以设置为物理内核数-逻辑内核数之间的数字,我的电脑物理内核为4,逻辑内核数为8,因此设置-j参数为8.

d、查看生成的镜像文件并刷入

进入源码目录下/out/target/product/bullhead,执行以下命令:

//进入手机bootloader
adb reboot bootloader
 
//开始刷机
fastboot flash boot boot.img
 
fastboot flash system system.img
 
fastboot flash cache cache.img
 
fastboot flash userdata userdata.img
 
fastboot flash recovery recovery.img
        参考链接:https://source.android.google.cn/source/running

        刷入过程中首先需要将手机解锁,否则无法刷入,同时打开手机调试,这里可能会遇到一些坑,如果是adb devices 命令udev问题可以参考踩坑7.1的问题e,如果是其他问题可参考官网链接https://source.android.google.cn/source/running或文末博客链接。

f、刷入vendor.img

        7.1.2版本的源码编译过程中,我们没有下载驱动二进制文件,因此在/out/target/product/bullhead目录中也不会有vendor.img,直接解压前面下载的镜像包,找到里面的image***.zip继续解压找到vendor.img,刷入vendor.img镜像。

g、手机重启

fastboot reboot
此时处于fastboot模式,执行该命令即可重启手机。手机重启后会报内部错误,由于用于自己调试,因此也没关系,需要解决的同学可以参考文末博客链接。

5)编译7.1踩坑
在我修复的过程中,有时候执行make命令会报同样的错,这个时候我通常执行make clobber命令清除之前编译生成的环境和文件,全部重新执行生效。

a、

[  1% 761/49025] Yacc: aidl &

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值