当前位置: 首页 > news >正文

下载红米Note 9 Pro5G对应的LineageOS代码下载及编译

构建 LineageOS

        进入网站:Info about gauguin | LineageOS Wiki,点击:Build for yourself,里面有详细的教程,我这里就按照Note 9 Pro 5G来。

机器环境

  • Ubuntu环境为:20.04.6
  • LinagesOS版本:21-20241211-NIGHTLY-gauguin,版本查看:设置→关于本机→ LineageOS版本

1、安装platform-tools

1.1、安装 platform-tools:https://dl.google.com/android/repository/platform-tools-latest-linux.zip

1.2、解压

unzip platform-tools-latest-linux.zip -d ~

1.3、配置环境,在终端执行:(我这里有一个巨坑,一行一行的复制就不会报错 “ :未找到命令”)

vim ~/.profile
 

#填入如下信息。注意我这里的路径。有一个fugui,根据自己的路径来

# add Android SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
    PATH="$HOME/fugui/platform-tools:$PATH"
fi

1.4、更新环境:

source ~/.profile

2、安装构建包

2.1安装基本构建工具

sudo apt update

sudo apt install -y bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev

2.2处理Ubuntu版本额外依赖项

如果是Ubuntu 23.10 (mantic)版本:还需要下载 libtinfo5 和 libncurses5库

wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.4-2_amd64.deb
sudo dpkg -i libtinfo5_6.4-2_amd64.deb
rm -f libtinfo5_6.4-2_amd64.deb

wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libncurses5_6.4-2_amd64.deb
sudo dpkg -i libncurses5_6.4-2_amd64.deb
rm -f libncurses5_6.4-2_amd64.deb

如果是Ubuntu 版本低于 23.10 (mantic):还需要下载以下软件包:

sudo apt install -y lib32ncurses5-dev libncurses5 libncurses5-dev

如果是Ubuntu 版本低于 20.04 (focal):还需要下载以下软件包:

sudo apt install -y libwxgtk3.0-dev

如果是Ubuntu 版本低于 16.04 (xenial):还需要下载以下软件包:

sudo apt install -y libwxgtk2.8-dev

3、下载JDK 

确定 LineageOS 版本与所需的 JDK

  • LineageOS 18.1 及以上:需要 OpenJDK 11(源码下载中已包含)。
  • LineageOS 16.0-17.1:需要 OpenJDK 9(源码下载中已包含)。
  • LineageOS 14.1-15.1:需要 OpenJDK 8(需手动安装)。
  • LineageOS 11.0-13.0:需要 OpenJDK 7(需手动安装,Ubuntu 16.04 及以上需使用额外方法)。

安装 OpenJDK

sudo apt install -y openjdk-11-jdk

java -version

        注意:要构建这些版本,需要在 etc/java-11-openjdk/security/java.security删除 TLSv1和TLSv1.1

4、安装Python3

        确定你的 LineageOS 版本所需的 Python 版本

  • LineageOS 17.1 及以上:需要 Python 3。(我这里最新是Python 3.8.10
  • LineageOS 11.0 到 16.0:需要 Python 2。

# 安装 python3

sudo apt install python-is-python3

python --version

5、安装repo

5.1创建目录

mkdir -p ~/bin
mkdir -p ~/work/android/lineage

5.2安装命令repo

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

5.3添加环境变量,将目录放在执行路径中~/bin,在Ubuntu 中 PATH 中 如果缺少,请添加它:(一般存在,这一步可以省略)

vim ~/.profile

# 在文件末尾添加以下行:

if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

     运行以下命令使修改生效:

source ~/.profile

5.1配置 git

git config --global user.email "1115406747@qq.com"
git config --global user.name "fuguidai"

      可选操作 LineageOS 项目中,一些代码库因为文件体积较大,已经配置为使用 Git LFS,如果你的开发环境未安装或配置 Git LFS,可能会导致拉取这些文件失败或出现错误。执行如下命令,必须先执行 git init

fugui@fugui-virtual-machine:~/work/android/lineage$ git init
已初始化空的 Git 仓库于 /home/fugui/work/android/lineage/.git/


fugui@fugui-virtual-machine:~/work/android/lineage$ git lfs install
Updated git hooks.
Git LFS initialized

        (可选操作为避免提交消息中出现重复的尾部,尤其是在挑选更改时,请向 git 制作一个已知的尾部:Change-Id:

git config --global trailer.changeid.key "Change-Id"

5.2打开缓存以加快构建速度(可选操作)

        ccache 是一种编译缓存工具,它通过缓存之前编译过的内容,在后续的编译过程中直接复用这些缓存,从而显著减少编译时间。它特别适用于像 Android 这样需要频繁重复编译的大型代码库。

export USE_CCACHE=1
export CCACHE_EXEC=/usr/bin/ccache

        并将该行添加到您的文件中m指定要使用的最大磁盘空间量:~/.bashr cccache

vim ~/.bashrc

#添加如下信息

# Enable ccache for faster builds export USE_CCACHE=1 export

CCACHE_EXEC=/usr/bin/ccache

# 立即生效

source ~/.bashrc

        指定缓存空间大小,50G 表示最大缓存大小为 50GB,可以根据需要调整。如果只编译单个设备:25GB-50GB 足够。如果编译多个设备(尤其是内核源码不共享的情况):建议 75GB-100GB。

ccache -M 50G

       默认情况下,ccache 不会对缓存文件进行压缩,如果希望提高缓存命中率,可以开启压缩:

ccache -o compression=true

5.3初始化 LineageOS 源存储库

        国内需要对repo下载后需要修改REPO_URL

vi ~/bin/repo

        找到REPO_URL ,修改为:

# 原路径REPO_URL = "https://gerrit.googlesource.com/git-repo",替换成如下

REPO_URL ='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

输入以下内容以初始化存储库:

cd ~/work/android/lineage
repo init -u https://github.com/LineageOS/android.git -b lineage-21.0 --git-lfs

  • lineage-18.1
  • lineage-19.1
  • lineage-20.0
  • lineage-21.0

5.4repo init后,需要对.repo的xml进行修改(非常关键)

        如果repo init后直接repo sync,国内会报出很多错误,错误原因还是因为国内网络,解决方法如下:对 /home/fugui/work/android/lineage/.repo/manifests/default.xml进行修改,这个是隐藏文件,按住ctrl+h显示,修改具体点如下,用git diff给大家看:

        建议先备份:

cp /home/fugui/work/android/lineage/.repo/manifests/default.xml  /home/fugui/work/android/lineage/.repo/manifests/default.xml.bak

 <?xml version="1.0" encoding="UTF-8"?>
 <manifest>
 
-    <remote  name="github"
-            fetch=".."
             review="review.lineageos.org" />


+   <remote  name="github"
+           fetch="https://github.com/"

             review="review.lineageos.org" />
+  <remote  name="lineage"
+           fetch="https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/"
+           review="review.lineageos.org" />
 
   <remote  name="private"
            fetch="ssh://git@github.com" />
 
   <remote  name="aosp"
-           fetch="https://android.googlesource.com"
-           review="android-review.googlesource.com"
+          fetch="https://mirrors.tuna.tsinghua.edu.cn/git/AOSP"
            revision="refs/tags/android-14.0.0_r67" />
 
   <default revision="refs/heads/lineage-21.1"
-           remote="github"
+           remote="lineage"
            sync-c="true"
            sync-j="4" />

        同步下载源代码(需要很长的时间)

repo sycn

        经过漫长的一晚上,终于下载好了。

6、开始编译

6.1 编译执行的环境,在源码路径下执行如下命令

source build/envsetup.sh
breakfast gauguin


        等待一会后,我们就可以把大部分gauguin的依赖下载好,但是有一些无法下载,有两种办法:

  1. 使用魔法翻墙。
  2. 从我们已经刷了lineage os手机上提取专有驱动文件 blobs,lineage已经给我们写了extract-files.sh脚本(注意一定要保证手机已经可以adb root成功)

6.2 提取专有驱动文件 blobs

        运行脚本 extract-files.sh 提取设备专有驱动文件,这些文件会用于构建 LineageOS。

目的:
        提取专有驱动文件是 Android 系统构建的关键步骤这些文件(blobs)是设备厂商提供的闭源组件,包含了设备硬件(如 GPU、调制解调器、摄像头等)正常运行所必需的驱动和库文件

原因:
        在 Android 开源项目(AOSP)中,这些专有驱动文件并没有公开,需要从设备中提取或从官方的可安装包中解压
        这些文件会被集成到编译生成的 ROM 中,使 LineageOS 能够支持特定设备的硬件。

        现在确保红米 Note 9 Pro 5G 已通过 USB 数据线连接到您的计算机,并启用了 adb 和 root,并且您在文件夹中。然后运行脚本:

当前路径为:cd ~/work/android/lineage/device/xiaomi/gauguin

执行脚本提取专有文件,这个脚本会从设备中提取专有驱动文件(proprietary blobs)。

./extract-files.sh

        提取的文件会存放到路径 ~/wrok/android/lineage/vendor/xiaomi。

        再次执行

source build/envsetup.sh
breakfast gauguin

        如果遇到 command not found 错误,说明系统找不到相关命令。这时你需要确保相关工具(如 adb)被正确安装并放在正确的路径中。错误提示中建议你将命令添加到 ~/android/lineage/vendor/xiaomi/adb~/bin 目录中。

        检查你的 ADB 工具是否正确安装, 确保 ADB 已安装,可以运行以下命令:

sudo apt install android-tools-adb

        如果 ADB 工具不在系统 PATH 中,将 ADB 工具拷贝到 ~/bin 目录下:

cp /path/to/adb ~/bin/
#确保 ~/bin 在 PATH 中:
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc

6.3 开始编译,在源码路径下执行如下命令

croot
brunch gauguin

7、刷入编译的压缩包

1、首先进入recovery

adb reboot recovery

2、点击这里的Apply Update

这个页面再执行命令:

adb sideload out/target/product/gauguin/lineage-21-20241211-NIGHTLY-gauguin.zip

本篇文章参考:aosp 12/13/lineageos19.1 framework学习编译刷入小米手机,努比亚_红米手机可以刷aosp吗-CSDN博客 

相关文章:

下载红米Note 9 Pro5G对应的LineageOS代码下载及编译

构建 LineageOS 进入网站&#xff1a;Info about gauguin | LineageOS Wiki&#xff0c;点击&#xff1a;Build for yourself&#xff0c;里面有详细的教程&#xff0c;我这里就按照Note 9 Pro 5G来。 机器环境 Ubuntu环境为&#xff1a;20.04.6LinagesOS版本&#xff1a;21-…...

《探索 Caffe2 的 C++接口在移动设备上的性能优化之路》

在当今移动应用日益智能化的时代&#xff0c;将深度学习框架如 Caffe2 的 C接口应用于移动设备上已成为众多开发者的目标。然而&#xff0c;移动设备资源相对有限&#xff0c;如何优化其性能成为了关键挑战。 一、移动设备应用深度学习的现状与挑战 随着智能手机等移动设备的…...

1.编写一个程序,给定一个大写字母,要求用小写输出

思路&#xff1a;ascII码值 例如&#xff1a;A的ASCII码值为65&#xff0c;a的ASCII码值为97&#xff0c;不难发现&#xff0c;大小写字母之间的ascii值相差了32 #include <stdio.h> int main() {char c;scanf("%c",&c);printf("%c",c32);retu…...

条件随机场(CRF)详解:原理、算法与实现(深入浅出)

目录 1. 引言2. 什么是条件随机场&#xff1f;2.1 直观理解2.2 形式化定义 3. CRF的核心要素3.1 特征函数3.2 参数学习 4. 实战案例&#xff1a;命名实体识别5. CRF vs HMM6. CRF的优化与改进6.1 特征选择6.2 正则化 7. 总结与展望参考资料 1. 引言 条件随机场(Conditional Ra…...

Android Studio、JDK、AGP、Gradle、kotlin-gradle-plugin 兼容性问题

文章目录 问题&#xff1a;解决办法&#xff1a;gradle与 java的版本兼容AGP与Gradle的版本兼容kotlin 与 jvm 的版本兼容KGP、Gradle、AGP兼容关系kotlin 与 java 的编译版本配置 问题&#xff1a; 你从githb上clone了一个项目&#xff0c;本地跑的时候&#xff0c;各种报错。…...

防抖(Debounce)和节流(Throttle)的区别和应用场景

防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&#xff09;虽然都是用来限制函数的执行频率&#xff0c;但它们的实现方式和应用场景有所不同。以下是两者的主要区别&#xff1a; 1. 执行原理 防抖&#xff08;Debounce&#xff09;&#xff1a; 执行条件&a…...

前端 Code Review 常见问题

在前端开发中&#xff0c;代码审查&#xff08;Code Review&#xff09;是一个至关重要的步骤。它不仅可以帮助团队成员之间共享知识和经验&#xff0c;还可以提高代码质量&#xff0c;减少错误和安全漏洞。以下是一些常见的前端 Code Review 问题和相应的解决方案。 1. 不一致…...

Python监控AWS ECS集群和服务的CPU和内存利用率

在电子商务或其他行业,重要节日通常会带来大量的流量和订单,这对应用程序的资源利用率提出了更高的要求。为了确保应用程序在节日期间能够顺利运行,提前监控和优化资源利用率至关重要。 在本文中,我们将介绍如何使用Python编写一个脚本,从AWS CloudWatch中获取ECS集群和服务的…...

淘宝天猫API接口深度解析:如何高效利用商品详情与关键词搜索商品列表功能

在电子商务的浩瀚海洋中&#xff0c;淘宝和天猫作为两大巨头&#xff0c;其平台上的商品信息无疑是商家和消费者关注的焦点。为了更高效地获取这些信息&#xff0c;淘宝天猫开放平台提供了丰富的API接口&#xff0c;其中商品详情接口和关键词搜索商品列表接口尤为关键。本文将深…...

python快速接入阿里云百炼大模型

1.注册阿里云账号 访问阿里云官网&#xff0c;完成账号注册流程&#xff0c;并开通百炼服务&#xff0c;网址&#xff1a;https://bailian.console.aliyun.com 2.获取 API Key 登录阿里云百炼平台&#xff0c;在个人中心或相关设置页面找到并生成 API Key&#xff0c;妥善保管此…...

基于AI对话生成剧情AVG游戏

游戏开发这个领域&#xff0c;一直有较高的学习门槛。作为一个非专业的游戏爱好者&#xff0c;如果想要开发游戏&#xff0c;往往受制于游戏引擎的专业程度&#xff0c;难以完成复杂的游戏项目。 AI IDE的诞生&#xff0c;提供了另外的一种思路&#xff0c;即通过AI 生成项目及…...

[flutter] 安卓编译配置

Maven 镜像 android/build.gradle buildscript {ext.kotlin_version 1.7.10repositories {google() // mavenCentral()maven { url https://maven.aliyun.com/repository/google }maven { url https://maven.aliyun.com/repository/jcenter }maven { url https://mav…...

使用ENSP实现NAT(2)

一、NAT的类型 二、静态NAT 1.项目拓扑 2.项目实现 路由器AR1配置&#xff1a; 进入系统视图 sys将路由器命名为AR1 sysname AR1关闭信息中心 undo info-center enable 进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为192.168.10.254/24 ip address 192.168.10.254 24进…...

解决小程序中ios可以正常滚动,而Android失效问题

解决小程序中 iOS 可以正常滚动&#xff0c;而 Android 失效问题 在开发小程序时&#xff0c;我们经常会遇到一些平台兼容性问题。最近&#xff0c;我在开发一个小程序时遇到了一个问题&#xff1a;在 iOS 设备上可以正常滚动加载更多数据&#xff0c;而在 Android 设备上却无…...

docker安装部署

1.Docker简介 Docker是一个开源的容器引擎,开发者可以打包应用以及相关依赖包到一个可移植的容器中,发布到任何流行的Linux机器上。容器是完全使用沙箱机制,相互之间不会有任何接口,而且更轻量级。 1.1 概念 docker会自动搜索并下载应用镜像,镜像不仅包含应用本身,还包含…...

百度23届秋招研发岗A卷

百度23届秋招研发岗A卷 2024/12/16 1.下面关于 SparkSQL 中 Catalyst 优化器的说法正确的是&#xff08;ABC&#xff09; A.Catalyst 优化器利用高级编程语言功能&#xff08;例如 Scala 的模式匹配&#xff09;来构建可扩展的查询优化器 B.Catalyst 包含树和操作树的规则集…...

metrics.roc_curve函数介绍

目录 函数介绍使用方法 函数介绍 metrics.roc_curve 是 scikit-learn 中的一个函数&#xff0c;用于计算接收者操作特征曲线&#xff08;Receiver Operating Characteristic, ROC&#xff09;曲线的参数。 具体来说&#xff0c;metrics.roc_curve 函数接受真实的标签和预测标…...

stm32进硬件错误怎么回事

STM32进入硬件错误状态&#xff0c;通常是由一些特定的编程或硬件问题引起的。以下是一些可能的原因及相应的解决方法&#xff1a; 可能的原因 数组越界操作&#xff1a;在编程过程中&#xff0c;如果数组访问超出了其定义的边界&#xff0c;可能会导致内存访问错误&#xff0…...

【网络安全】掌握 Active Directory 攻防审计实操知识点

掌握 Active Directory 攻防审计实操知识点 在深入了解 Active Directory 之前&#xff0c;我们需要先掌握网络基础设施的映射和资源访问管理方式。这一切通常通过目录服务 (Directory Services) 实现&#xff0c;目录服务在组织内提供网络资源的映射和访问。轻量目录访问协议…...

vscode不同项目使用不同插件

转载请注明出处&#xff1a;小帆的帆的博客 在使用vscode开发不同项目时可能会用到不同的插件。手动管理不够优雅&#xff0c;本文介绍使用Profiles的方式的来管理不同项目的插件。 手动管理不同项目的插件 本来vscode安装了有三个插件 这时需要新建一个项目&#xff0c;新…...

Spring Boot 3.x面试全攻略:自动配置+事务+AOT,2026最新考点

文章目录一、开场&#xff1a;Spring Boot面试&#xff0c;你真的准备好了吗&#xff1f;二、自动配置&#xff1a;从"黑魔法"到"透明厨房"2.1 面试第一问&#xff1a;自动配置到底咋实现的&#xff1f;2.2 3.5版本新考点&#xff1a;TaskExecutor名称变更…...

收藏!小白程序员必看:轻松入门大模型核心概念MCP与Skill,解锁AI能力新姿势!

本文通过生活化比喻&#xff0c;深入浅出地解释了AI领域中的MCP和Skill两大核心概念。MCP如同AI世界的“USB接口”&#xff0c;是标准化的连接协议&#xff0c;让AI能调用外部工具&#xff1b;Skill则像“工作手册”&#xff0c;是工作规范/技能模板&#xff0c;告诉AI在不同场…...

Phi-4-mini-reasoning效果验证:在MMLU-Pro数学子集上的实际推理准确率展示

Phi-4-mini-reasoning效果验证&#xff1a;在MMLU-Pro数学子集上的实际推理准确率展示 1. 模型概述 Phi-4-mini-reasoning是一款3.8B参数的轻量级开源模型&#xff0c;由微软Azure AI Foundry团队开发。这款模型专为数学推理、逻辑推导和多步解题等强逻辑任务设计&#xff0c…...

网安实验干货每日分享(Weevely配置使用)

网安实验干货每日分享&#xff08;Weevely配置使用&#xff09;-1031 渗透测试环境搭建与工具使用-Weevely配置使用 实验目的 熟悉Webshell管理工具Weevely的配置使用。 实验环境 操作机&#xff1a;Kali2018-TS &#xff08;1&#xff09;操作系统&#xff1a;Kali Linu…...

2026年4月OpenClaw(Clawdbot)一键部署及接入Skills保姆级教程,让OpenClaw(个人AI助手) 7*24 小时为你工作!

2026年4月OpenClaw&#xff08;Clawdbot&#xff09;一键部署及接入Skills保姆级教程&#xff0c;让OpenClaw(个人AI助手) 7*24 小时为你工作&#xff01;OpenClaw&#xff08;原Clawdbot&#xff09;作为2026年主流的AI自动化助理平台&#xff0c;可通过阿里云轻量服务器实现7…...

3大核心突破:解密m4s-converter如何实现B站缓存视频的智能重生

3大核心突破&#xff1a;解密m4s-converter如何实现B站缓存视频的智能重生 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾面对B站缓存目…...

【原创改进代码】面向绿证-碳交易的综合能源系统鲁棒优化方法附Python代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…...

DistroAV技术解析:NDI网络视频传输的OBS插件解决方案

DistroAV技术解析&#xff1a;NDI网络视频传输的OBS插件解决方案 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi 在当今的直播和内容创作领域&#xff0c;网络视频传输技…...

Midscene.js:重塑UI自动化的革命性AI视觉驱动方案

Midscene.js&#xff1a;重塑UI自动化的革命性AI视觉驱动方案 【免费下载链接】midscene AI-powered, vision-driven UI automation for every platform. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 你是否曾为编写复杂的UI自动化脚本而头疼&#xff…...

Comfy UI Docker 镜像构建实战:从零到部署的完整指南

1. 环境准备与基础配置 在Windows 11上通过WSL搭建Comfy UI开发环境&#xff0c;首先要确保系统版本支持WSL 2。打开PowerShell输入wsl --version检查&#xff0c;如果显示版本低于2.0&#xff0c;需要执行wsl --install进行升级。我推荐使用Ubuntu 22.04作为子系统&#xff0c…...