今天分享LineageOS的第二篇内容,如何使用LineageOS的源码编译你想要的指定Android版本的系统,最后是如何在模拟器中使用以及移植的实例分享,如果你不想编译源码,想直接使用编译好的系统刷机,可以直接查看一念上一篇分享内容~
有更多感兴趣的也欢迎大家留言、私信和一念一起交流学习~
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...
具体的环境安装这里就不在过多介绍,如果你没有的可以直接看一念之前的分享内容,一步一步照着安装就可以了!
LineageOS源码下载
以下是LineageOS源码下载相关的站点,可以按需获取相关资源
- LineageOS官网:lineageos.org/
- LineageOS源码 github 地址:github.com/LineageOS/a…
- LineageOS源码国内镜像地址:mirrors.tuna.tsinghua.edu.cn/help/lineag…
初始化仓库
源码下载需要使用到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
这里也提供一些常用的构建目标给大家做参考:
开始构建
使用以下命令发起系统构建:
# 直接发起构建
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/目录就可以看到你的镜像压缩包了,我这里如下图所示:
创建模拟器
将打包好的镜像zip文件放入目标电脑Android SDK的syste-image目录,具体如下:
D:\Android\Sdk\system-images\android-33\default
由于LineageOS-20版本对应的是Android13的版本,所以这里我解压存放在android-33下的defaut文件夹内,其他版本可以对应存放。
然后创建模拟器有两种方式:
方式一:使用命令创建
使用以下命令可以直接基于你编译的系统镜像创建并一个avd的模拟器:
avdmanager create avd -n "LineageOS20" -k "system-images;android-33;default;x86_64"
方式二:使用Android Studio创建
打开Android Studio后打开device manger界面,后点击+号Create Virtual Device。
然后选择一个手机型号,这里我选择的是Pixel 7,然后点击next下一步:
设置模拟器名称、选择对应Android版本以及我们编译的固件,点击finish就可以完成模拟器创建了:
最后点击启动就可以启动模拟器了:
最后
至此使用LineageOS源码编译Android系统就实现了,大家可以根据自己的实际需求下载对应的版本进行编译。
后续还会进一步分享如何利用LineageOS的源码编译品牌真机的系统内容,感兴趣的可以关注~
也欢迎大家随时留言、私信交流学习~