【实战系列】一篇文章教你如何快速使用LineageOS编译你想要的Android版本系统(附模拟器镜像编译、启动、移植实例)

157 阅读6分钟

今天分享LineageOS的第二篇内容,如何使用LineageOS的源码编译你想要的指定Android版本的系统,最后是如何在模拟器中使用以及移植的实例分享,如果你不想编译源码,想直接使用编译好的系统刷机,可以直接查看一念上一篇分享内容~

juejin.cn/post/758694…

有更多感兴趣的也欢迎大家留言、私信和一念一起交流学习~

LineageOS是什么

官方Slogan是:A free and open-source operating system for various devices, based on the Android mobile platform.(一款基于安卓移动平台的免费开源操作系统,适用于各种设备。)

利用它可以给你的Android设备更换任何一个你想要的Android版本系统,解决官方不维护更新又想体验新系统的问题~

编译依赖

LineageOS源码编译也和Android官方AOSP编译一样,存在一定的门槛,大致如下:

  • 系统要求:Linux系统环境,这里推荐Ubuntu系统,建议使用 SSD,至少 300GB 可用空间,内存 16GB 以上;
  • 网络要求:如果不走国内源,就需要你能访问外网的网络环境
  • 软件要求:Python、Git、repo...

具体的环境安装这里就不在过多介绍,如果你没有的可以直接看一念之前的分享内容,一步一步照着安装就可以了!

juejin.cn/post/750679…

LineageOS源码下载

以下是LineageOS源码下载相关的站点,可以按需获取相关资源

初始化仓库

源码下载需要使用到repo,而LineageOS的源码仓库配置在github上,部分人的电脑是无法访问的,需要梯子,后文就以国内能正常拉取的方式进行分享。

如果你按照我前面分享源码下载的方式进行配置的repo,下方的优化提速就可以不用看了,直接看初始化就行。

优化提速1(按需)

如果不是按照我前面分享的安装的repo,也不是国内源的repo,建议先将repo初始化使用的地址改到国内源,比如清华大学的,然后再进行初始化就可以了,具体使用命令如下:

# 设置清华大学地址
export REPO_URL=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/

# 重置url
unset REPO_URL

注:个人觉得吧,国内改了也没必要改回来了不是,毕竟国内的快

初始化

使用下方命令可以拉取到repo仓库信息:

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-20.0 --git-lfs

注:

  • 这里我拉取的是LineageOS-20.0的源码
  • 使用了git-lfs,也可以不用。如果你需要使用,可以使用以下命令先行安装
sudo apt install git-lfs

优化提速2(按需)

如果你不是全部走的github官方下载方式,建议做如下修改:

修改点1:

打开.repo/manifests/default.xml文件将以下内容:

<remote  name="github"fetch=".."review="review.lineageos.org" />

修改为:

<remote  name="github" 
    fetch="https://github.com/" />
<remote  name="lineage" 
    fetch="https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/"review="review.lineageos.org" />

##修改点2:

将以下内容:

<default revision="refs/heads/lineage-20.0"
           remote="github"
           sync-c="true"
           sync-j="4" />

修改为:

<default revision="refs/heads/lineage-20.0"
           remote="lineage"
           sync-c="true"
           sync-j="4" />

代码拉取

当上述修改都已经做好后,你就可以直接拉取代码了,而且速度就不会受到github网络限制了。

使用以下代码拉取LineageOS的源码:

repo sync

注:这里根据你的网速下载可能需要几十分钟到1、2小时不等,需要耐心等待。

系统编译

这里考虑到大家大部分人都不会直接使用真机来实操,所以直接以模拟器版本系统编译为例给大家进行分享。

加载编译环境

这一步命令和Android源AOSP的命令一致:

source build/envsetup.sh

选择编译目标

编译目标就是你需要编译的系统分支,不同设备使用的分支是不同的,所以需要根据你的实际情况进行选择,这里模拟器我选择的是sdk_phone_x86_64目标分支,这样方便在AVD模拟器中直接使用,命令如下:

breakfast sdk_phone_x86_64

这里也提供一些常用的构建目标给大家做参考:

image.png

开始构建

使用以下命令发起系统构建:

# 直接发起构建
mka

# 指定构建线程,32就是你要使用的线程数,多少取决于你设备能提供多少
mka -j32

# 打印编译过程日志,失败时用于排查问题
mka -j32 2>&1 | tee build.log

启动系统

直接启动

如果你的编译环境可以直接运行模拟器,在构建之后直接输入以下命令就可以启动模拟器了:

emulator

创建avd模拟器启动

打包模拟器镜像

如果你的编译设备和我一样,不支持直接启动,可以将编译成果打包成系统镜像,迁移到支持运行的设备中启动。打包命令如下:

# LineageOS 20及以下版本
mka sdk_addon

# LineageOS 21及以上版本
mka emu_img_zip

打包成功后,在你的out/host/linux-x86/sdk_addon/目录就可以看到你的镜像压缩包了,我这里如下图所示:

image.png

创建模拟器

将打包好的镜像zip文件放入目标电脑Android SDK的syste-image目录,具体如下:

D:\Android\Sdk\system-images\android-33\default

由于LineageOS-20版本对应的是Android13的版本,所以这里我解压存放在android-33下的defaut文件夹内,其他版本可以对应存放。

image.png

然后创建模拟器有两种方式:

方式一:使用命令创建

使用以下命令可以直接基于你编译的系统镜像创建并一个avd的模拟器:

avdmanager create avd -n "LineageOS20" -k "system-images;android-33;default;x86_64"

image.png

方式二:使用Android Studio创建

打开Android Studio后打开device manger界面,后点击+号Create Virtual Device。

image.png

然后选择一个手机型号,这里我选择的是Pixel 7,然后点击next下一步:

image.png

设置模拟器名称、选择对应Android版本以及我们编译的固件,点击finish就可以完成模拟器创建了:

image.png

最后点击启动就可以启动模拟器了:

image.png

image.png

image.png

最后

至此使用LineageOS源码编译Android系统就实现了,大家可以根据自己的实际需求下载对应的版本进行编译。

后续还会进一步分享如何利用LineageOS的源码编译品牌真机的系统内容,感兴趣的可以关注~

也欢迎大家随时留言、私信交流学习~