LineageOS 14.1(CM14.1)的快速下载与编译

2024-03-04 12:18

本文主要是介绍LineageOS 14.1(CM14.1)的快速下载与编译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码的快速下载

Cyanogenmod OS或者说后来的Lineage OS的代码都是分为两个部分:

  • cm团队自己或者社区开发的代码: 主要是适配设备, 例如vendor相关,放在github上面
  • aosp代码: google的AOSP代码, 作为base

因为本地有一份AOSP的Mirror,所以这部分AOSP代码就不需要再从google去下载了, 直接从本地获取即可. 

local mirror的建立可以参考AOSP的repo 与get source相关文档.


关于repo与如何快速使用本地代码可以参考前面的博客:

使用本地AOSP镜像快速获取Android代码

repo详解与如何更改manifest快速获取和复用AOSP代码


修改步骤

1. repo init

根据LineageOS的的使用方法直接init:

repo init -u git://github.com/lineageos/android.git -b cm-14.1

这样就获取了.repo目录中的manifest仓库.

2. 修改manifest.git来源的url

因为前面的repo文章说明的是一个remote的使用, 而这里说明一下多个remote情况下的使用.

因为在manifest.xml中, 所有的name都是都没有自带.git, 所以无法直接修改remote中的fetch来完成:


注意高亮Line的的name结尾没有.git, 而我们的local mirror中参考却是有的:

$ realpath /ExtDisk/android/aosp_mirror/platform/developers/build.git/
/ExtDisk/android/aosp_mirror/platform/developers/build.git

因此我们还是直接修改config文件, 避免去全局修改manifest文件.

下面是修改后的url地址:


同时将LineageOS的remote fetch与aosp的fetch更改一下:


提取proprietary files

这个提取的流程在以前的博客中有说明:

为小米4与小米3 Mi3 Mi4编译Cyanogenmod 12.1与13.0 (CM12与CM13) 的步骤以及错误解决

但是到了CM14.1, 和前面又有一些不一样, 因此再次说明一下.

提取的流程

脚本根据下面这个文件:

device/asus/flo/proprietary-blobs.txt

知道需要提取的文件

然后使用adb从实机提取, 或者从extract ROM中提取.

从Extract ROM中提取

步骤还是和以前一样, 使用sdat2img获取ext4格式的image:

$ sdat2img.py system.transfer.list system.new.dat system.img

然后需要mount到一个新创建的system目录.例如:

mkdir ../system
sudo mount  system.img ../system
realpath ..
/ExtDisk/android/Nexus7/lineage-14.1-20170307-nightly-flo-signed

然后就可以运行提取脚本了:

cd $ANDROID/device/asus/flo/
./extract-files /ExtDisk/android/Nexus7/lineage-14.1-20170307-nightly-flo-signed

注意第二行里面的$1参数为system目录的路径, 而不是mount的路径, 这个因为在脚本中会自动添加system:


同时我们在后面加入echo可以知道从哪个位置提取出来的. 提取完成后, 脚本还会自动创建makefile/*.mk用来完成拷贝功能.


编译

直接使用下面命令即可完成编译, 这个过程和以前的CM还是一样的.
. build/envsetup.sh
breakfast flo
brunch flo

参考

https://forum.xda-developers.com/moto-g-2014/general/guide-build-lineageos-titan-ubuntu-t3537396

这篇关于LineageOS 14.1(CM14.1)的快速下载与编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/773147

相关文章

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

Mybatis-Plus 3.5.12 分页拦截器消失的问题及快速解决方法

《Mybatis-Plus3.5.12分页拦截器消失的问题及快速解决方法》作为Java开发者,我们都爱用Mybatis-Plus简化CRUD操作,尤其是它的分页功能,几行代码就能搞定复杂的分页查询... 目录一、问题场景:分页拦截器突然 “失踪”二、问题根源:依赖拆分惹的祸三、解决办法:添加扩展依赖四、分页

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

使用Redis快速实现共享Session登录的详细步骤

《使用Redis快速实现共享Session登录的详细步骤》在Web开发中,Session通常用于存储用户的会话信息,允许用户在多个页面之间保持登录状态,Redis是一个开源的高性能键值数据库,广泛用于... 目录前言实现原理:步骤:使用Redis实现共享Session登录1. 引入Redis依赖2. 配置R

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性: