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

相关文章

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

python 3.8 的anaconda下载方法

《python3.8的anaconda下载方法》本文详细介绍了如何下载和安装带有Python3.8的Anaconda发行版,包括Anaconda简介、下载步骤、安装指南以及验证安装结果,此外,还介... 目录python3.8 版本的 Anaconda 下载与安装指南一、Anaconda 简介二、下载 An

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

Java下载文件中文文件名乱码的解决方案(文件名包含很多%)

《Java下载文件中文文件名乱码的解决方案(文件名包含很多%)》Java下载文件时,文件名中文乱码问题通常是由于编码不正确导致的,使用`URLEncoder.encode(filepath,UTF-8... 目录Java下载文件中文文件名乱码问题一般情况下,大家都是这样为了解决这个问题最终解决总结Java下

Python实现文件下载、Cookie以及重定向的方法代码

《Python实现文件下载、Cookie以及重定向的方法代码》本文主要介绍了如何使用Python的requests模块进行网络请求操作,涵盖了从文件下载、Cookie处理到重定向与历史请求等多个方面,... 目录前言一、下载网络文件(一)基本步骤(二)分段下载大文件(三)常见问题二、requests模块处理

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景