云服务器编译Android10系统源码遇到的坑介绍

描述

LineageOS Google Pixel3(blueline) Android10系统源码的下载、环境搭建、编译方法

LineageOS的Android系统版本

lineage-17.1 //Android10

lineage-18.1 //Android11

lineage-19.1 //Android12

 

https://wiki.lineageos.org/devices/blueline/build

 

 

sudo apt-get install  openjdk-8-jdk
sudo apt-get install -y python-dev python-setuptools python-pip python-smbus
sudo apt-get install python3sudo apt-get install python3-pip
sudo apt-get install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagicklib32ncurses5-dev lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libncurses5 libncurses5-devlibsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsyncschedtool squashfs-tools xsltproc zip zlib1g-dev

 

pip或pip3的升级

 

pip install --upgrade pip #python2的版本命令pip3 install --upgrade pip #python3的版本命令

 

Pixel3手机提取vendor的方法

 

https://wiki.lineageos.org/devices/blueline/buildhttps://lineageosroms.com/blueline/https://wiki.lineageos.org/extracting_blobs_from_zips

 

protobuf版本和python不匹配

python

python

python

 

TypeError: __init__() got an unexpected keyword argument 'serialized_options'

 

 

sudo pip install -U protobuf或sudo pip3 uninstall protobufsudo pip3 install -U protobuf

 

python

切换Python3的版本到Python3.7,参考如下文章

Ubuntu安装配置切换Python3版本的解决方法

Ubuntu环境Python3版本的更新升级使用方法

 

https://wiki.lineageos.org/extracting_blobs_from_zips

 

python

 

python3 /scripts/update-payload-extractor/extract.py payload.bin --output_dir /home/payload或cd /scripts/update-payload-extractor/python3 extract.py payload.bin --output_dir /home/payload

 

python

python

 

sudo -H pip uninstall protobufsudo -H pip uninstall googlesudo -H pip install -U googlesudo -H pip install -U protobuf或sudo -H pip3 uninstall protobufsudo -H pip3 uninstall googlesudo -H pip3 install -U googlesudo -H pip3 install -U protobuf

 

LineageOS Downloads(Pixel3 Android10系统镜像下载地址)

 

https://download.lineageos.org/https://download.lineageos.org/bluelinehttps://lineageosroms.com/https://lineageosroms.com/blueline/

 

python

从LineageOS zip中提取Pixel3手机Android系统版本匹配的vendor(方法1)

 

https://wiki.lineageos.org/extracting_blobs_from_zips

 

python

python

python

python

连接上Google Pixel3手机,其中手机中的Android系统版本号需要跟即将编译的Android系统版本号匹配,然后执行以下命令进行提取vendor(方法2)

 

cd ~/android/lineage/device/google/blueline
./extract
cd ~/android/lineage/vendor/google

 

备注:提取vendor的方法采用以上方法之一即可

如果遇到编译问题,可以参考,如下文章

Ubuntu虚拟机环境搭建Android系统源码编译环境及问题解决方法

Ubuntu18.04/20.04虚拟机编译Android4/5/6/7/8/9/10/11系统源码的问题解决

Ubuntu20.04系统设置全局的环境变量

 

sudo vim /etc/profile或sudo vim ~/.bashrc

 

把以下内容添加到/etc/profile或~/.bashrc中

 

export USE_CCACHE=1export CCACHE_EXEC=/usr/bin/ccacheccache -M 50Gccache -o compression=true

 

source后设置才可以生效

 

source /etc/profile或source ~/.bashrc

 

编译Android10系统源码(Google Pixel3手机)

 

source build/envsetup.shbreakfast bluelinecrootbrunch blueline

 

python

python

python

python

python

 

have enough space free (691224576 requested, 3392774144 used out of 4069523456)Not enough space on device for partition product with size 691224576

 

python

python

 

du -h  --max-depth=1 ./

 

python

python

python

python

python

python

python

以上报错的主要原因是空间不足(参考以下方法解决)

 

https://stackoverflow.com/questions/70482311/how-can-i-increase-system-ext-partition-in-aosp
ExternalError: Failed to run command '['lpmake', '--metadata-size', '65536', '--super-name', 'system', '--metadata-slots', '2', '--auto-slot-suffixing', '--device', 'system:2952790016', '--device', 'vendor:805306368', '--device', 'product:314572800', '--group', 'google_dynamic_partitions:4069523456', '--partition', 'system:readonly:2344202240:google_dynamic_partitions', '--image', 'system=/home/markus/EPhone/ethOS/out/target/product/blueline/obj/PACKAGING/target_files_intermediates/lineage_blueline-target_files-eng.markus/IMAGES/system.img', '--partition', 'vendor:readonly:452227072:google_dynamic_partitions', '--image', 'vendor=/home/markus/EPhone/ethOS/out/target/product/blueline/obj/PACKAGING/target_files_intermediates/lineage_blueline-target_files-eng.markus/IMAGES/vendor.img', '--partition', 'product:readonly:1016426496:google_dynamic_partitions', '--image', 'product=/home/markus/EPhone/ethOS/out/target/product/blueline/obj/PACKAGING/target_files_intermediates/lineage_blueline-target_files-eng.markus/IMAGES/product.img', '--partition', 'system_ext:readonly:266698752:google_dynamic_partitions', '--image', 'system_ext=/home/markus/EPhone/ethOS/out/target/product/blueline/obj/PACKAGING/target_files_intermediates/lineage_blueline-target_files-eng.markus/IMAGES/system_ext.img', '--sparse', '--output', '/home/markus/EPhone/ethOS/out/target/product/blueline/obj/PACKAGING/target_files_intermediates/lineage_blueline-target_files-eng.markus/OTA']' (exit code 70):lpmake I 12-25 19:38:11 10456 10456 builder.cpp:1031] [liblp]Partition system will resize from 0 bytes to 2344202240 byteslpmake I 12-25 19:38:11 10456 10456 builder.cpp:1031] [liblp]Partition vendor will resize from 0 bytes to 452227072 byteslpmake I 12-25 19:38:11 10456 10456 builder.cpp:1031] [liblp]Partition product will resize from 0 bytes to 1016426496 byteslpmake E 12-25 19:38:11 10456 10456 builder.cpp:620] [liblp]Partition system_ext is part of group google_dynamic_partitions which does not have enough space free (266698752 requested, 3812855808 used out of 4069523456)Not enough space on device for partition system_ext with size 266698752

 

 

BoardConfigLineage.mkhttps://github.com/LineageOS/android_device_google_crosshatch/commit/155109c657c804ca14e4cbb78ddc2caf5bfeda46

 

python

python

Pixel3手机Android10系统源码编译成功

python

python

Pixel3手机 Android10系统zip镜像

python

在out目录找到Pixel3手机Android10系统编译成功的zip镜像,然后对Pixel3手机进行刷机

python

Android10系统zip镜像的刷机方法,参考如下文章

玩转Android10(二)刷机操作

Android系统镜像刷机方法(一)

Android系统镜像刷机方法(二)

Android系统镜像刷机方法(三)

免Magisk使用adb命令安装Edxposed

编译Windows平台adb和fastboot工具

树莓派4B/2W,烧写SD卡刷入Android 系统

玩转Android10(二)刷机操作之fastboot刷机演示

玩转Android10(二)刷机操作之Recovery刷机演示

谷歌Pixel 2手机刷入官方安卓10工厂镜像图文详细教程

支持Pixel3手机刷机的twrp工具下载地址

 

https://twrp.me/google/googlepixel3.htmlhttps://eu.dl.twrp.me/blueline/

 

解锁Google Pixel3 Bootloader

备注:解锁bootloader将擦除设备中的所有数据,包括保存在设备内部存储器上的所有媒体,如图片,视频,音乐,文档等。为了避免不必要的麻烦和损失,请务必先将所有重要文件备份到PC或云存储,然后再执行此操作

(1).打开手机设置-关于手机-点击版本号7次,以打开“开发者选项”。

(2).返回到设置,打开 开发者选项-打开USB 调试,打开“OEM解锁”。出于安全考虑,这可能会要求你输入锁屏PIN/密码。

(3).向下滚动,直到看到“USB调试”选项并启用。

python

python

python

python

python

 

adb devicesadb reboot bootloaderfastboot devicesfastboot flashing unlockfastboot reboot

 

进入recovery模式后就显示no command

 

adb reboot recovery

 

问题原因:

recovery mode是官方的Recovery,没有刷入永久Twrp的Recovery

解决方法:

当未安装twrp,直接进入recovery会出现的界面,需要长按电源键强制关机,如图所示:

python

python

python

python

支持google Pixel3手机的twrp工具安装成功

 

fastboot boot twrp-3.6.0_11-0-blueline.img

 

python

python

python

python

LineageOS官方镜像

 

https://lineageosroms.com/blueline/

 

python

把云服务器上编译成功的Android10 Pixel3手机的zip镜像拷贝到sdcard,然后使用twrp工具进行刷机

 

adb push pixel3_blueline.zip /sdcard/

 

python

python

python

python

python

Pixel3手机刷Android10系统刷机成功

python

google系列机型,如果无法连接WIFI,可以参考如下文章

google手机连接WIFI后总会提示"无法连接互联网"的解决方法

python

特别注意:

其他Google机型或其他手机厂商的机型,都可以参考以上方法进行Android系统各版本源码的下载、环境搭建、系统编译、刷机等的通用方法





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分