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

【Android安全】Ubuntu 下载、编译 、刷入Android-8.1.0_r1

0. 环境准备

  • Ubuntu 16.04 LTS(预留至少95GB磁盘空间,实测占94.2GB)
    在这里插入图片描述

  • Pixel 2 XL
    要买欧版的,不要美版的。
    欧版能解锁BootLoader、能刷机。
    美版IMEI里一般带“v”或者"version",这样不能解锁BootLoader、也不能刷机。

  • 想刷入Android-8.1.0_r1

1. 下载源码

参考:https://blog.csdn.net/aichu6610/article/details/116071003
注意改用 python3 ~/bin/repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r1

1.1 安装并配置git和repo

安装git

sudo apt install git
git config --global user.name “your name”
git config --global user.email “XXX@XXX.com”

安装并配置repo

sudo apt install curlmkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

安装JDK 8

sudo apt update
sudo apt install openjdk-8-jdk

创建文件目录

mkdir  /home/tom/Android-8.1.0_r1
cd /home/tom/Android-8.1.0_r1

修改配置
找到~/bin/repo文件,修改如下配置

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

在终端下运行

git config --global url.https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/.insteadof https://android.googlesource.com

执行gedit ~/.bashrc然后在末尾添加:

export PATH=~/bin:$PATH
export REPO_URL=‘https://mirrors.tuna.tsinghua.edu.cn/git/git-repo’

运行 source ~/.bashrc 使环境变量生效

1.2 使用repo同步代码

Repo是谷歌提供的一套python脚本,封装了一系列git命令,用来管理多个git库

初始化repo仓库

python3 ~/bin/repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r1

如果想用其他版本,在这里查询:
https://source.android.com/source/build-numbers?hl=zh-cn

同步代码

repo sync -j8

这个过程会持续数个小时

-j8貌似是并行的意思,如果报错可以去掉-j8试试

中间有报错,但不知道是否有影响
在这里插入图片描述

某些时刻输出过长,所以最后就多出来一截 应该无大碍
在这里插入图片描述
以防万一,又 repo sync 了几遍
在这里插入图片描述

2. 准备驱动脚本

地址:https://developers.google.com/android/drivers

要找 android-8.1.0_r1 的 pixel 2xl的驱动

android-8.1.0_r1就是OPM1.171019.011
参考:https://source.android.com/docs/setup/about/build-numbers?hl=zh-cn#source-code-tags-and-builds

所以锁定:
https://developers.google.com/android/drivers#taimenopm1.171019.011
在这里插入图片描述
将上面两个link的内容下载下来,得到两个sh:

extract-google_devices-taimen.sh 
extract-qcom-taimen.sh

3. 编译

3.1 编译

source build/envsetup.sh

在这里插入图片描述
将下载的两个驱动脚本 放入源码根目录下 并执行

./extract-google_devices-taimen.sh 
./extract-qcom-taimen.sh

一顿敲回车(注意不要敲过油了)
最后敲入I ACCEPT
在这里插入图片描述
在这里插入图片描述
执行lunch

lunch

我的是Pixel 2 XL,也就是 taimen,所以选27
(各机型的对照参考:https://blog.csdn.net/guyongqiangx/article/details/123971895)

在这里插入图片描述
执行 time make
(这里不并行了,并行容易出bug,如果想并行可以time make -j4

time make

3.2 报错:Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))’ failed.

在这里插入图片描述

[  4% 5148/105788] Lex: applypatch <= bootable/recovery/edify/lexer.ll
FAILED: out/target/product/taimen/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp 
/bin/bash -c "prebuilts/misc/linux-x86/flex/flex-2.5.39 -oout/target/product/taimen/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp bootable/recovery/edify/lexer.ll"
flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
Aborted (core dumped)
[  4% 5153/105788] target arm C++: libaudioprocessing_32 <= frameworks/av/media/libaudioprocessing/AudioResamplerDyn.cpp
ninja: build stopped: subcommand failed.
15:07:08 ninja failed with: exit status 1

解决办法:参考:https://groups.google.com/g/android-building/c/0kzPnw3akxg/m/ozJe-XlSAQAJ

export LC_ALL=C

然后

make clean
time make

出现了新的报错

3.3 报错:Out of memory error GC overhead limit exceeded.

在这里插入图片描述

[ 62% 65895/105788] Building with Jack: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex
FAILED: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex 
/bin/bash out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex.rsp
Out of memory error (version 1.3-rc7 'Douarn' (445000 d7be3910514558d6715ce455ce0861ae2f56925a by android-jack-team@google.com)).
GC overhead limit exceeded.
Try increasing heap size with java option '-Xmx<size>'.
Warning: This may have produced partial or corrupted output.
[ 62% 65900/105788] //art/compiler:libart-compiler clang++ optimizing/optimizing_compiler.cc [linux]
ninja: build stopped: subcommand failed.
20:28:27 ninja failed with: exit status 1

解决办法:参考 https://blog.csdn.net/liangtianmeng/article/details/86665237

在文件/prebuilts/sdk/tools/jack-admin中修正-Xmx参数

修改变量JACK_SERVER_VM_ARGUMENTS,添加参数 -Xmx2048M

JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -mx2048M}"

然后

make clean
time make

在这里插入图片描述
在这里插入图片描述
至此,编译成功了

4. 刷机

4.1 Ubuntu安装fastboot和adb

在Ubuntu系统上安装ADB Fastboot

sudo apt install android-tools-adb
sudo apt install android-tools-fastboot

4.2 手机OEM解锁

要买欧版的,不要美版的。
欧版能解锁BootLoader、能刷机。
美版IMEI里一般带“v”或者"version",这样不能解锁BootLoader、也不能刷机。

手机解锁
参考:https://www.cnblogs.com/ciml/p/13949911.html

adb reboot bootloader
# 先看看设备是否连接成功
fastboot devices
# 解锁 (用于2015年及之后的设备)
fastboot flashing unlock# 老设备解锁 (2014及以前的设备)
fastboot oem unlock

这里用fastboot flashing unlock

如果报错

FAILED (remote: 'Flashing Unlock is not allowed')
fastboot: error: Command failed

说明手机的开发者模式里“OEM解锁”没有打开
需要保证网络畅通,确保能访问Google

在这里插入图片描述
再次adb reboot bootloader

手机进入bootloader

adb reboot bootloader
fastboot flashing unlock

之后通过音量加减键选中Yes,通过电源键确认

4.3 刷入img镜像

参考:https://www.cnblogs.com/ciml/p/13714036.html

在刚才编译源码的同一终端窗口内执行

fastboot flashall 

如果报错 error: ANDROID_PRODUCT_OUT not set
大概率是没在同一终端窗口执行

解决方法:执行

export ANDROID_PRODUCT_OUT=~/Android-8.1.0_r1/out/target/product/taimen

其中,~/Android-8.1.0_r1/out/target/product/taimen 是img文件所在的目录
在这里插入图片描述
再次执行fastboot flashall
在这里插入图片描述
在这里插入图片描述

成功!

相关文章:

【Android安全】Ubuntu 下载、编译 、刷入Android-8.1.0_r1

0. 环境准备 Ubuntu 16.04 LTS&#xff08;预留至少95GB磁盘空间&#xff0c;实测占94.2GB&#xff09; Pixel 2 XL 要买欧版的&#xff0c;不要美版的。 欧版能解锁BootLoader、能刷机。 美版IMEI里一般带“v”或者"version"&#xff0c;这样不能解锁BootLoader、…...

HBuilder X3.4版本中使用uni-app自定义组件

HBuilder X3.4版本中使用uni-app自定义组件 这是我的小程序页面结构 方式一&#xff1a;导入components 1.创建componets文件&#xff0c;并编写你的组件页面 <template><view class"my-search-container"><!-- 使用 view 组件模拟 input 输入框的样…...

PHP基础语法(一)

一、初步语法 1、PHP代码标记&#xff1a;以 <?php 开始&#xff0c;以 ?> 结束&#xff1b; 2、PHP注释&#xff1a;行注释&#xff1a;//&#xff08;双斜杠&#xff09;或# 块注释&#xff1a;/* */ 3、PHP语句分隔符&#xff1a; 1&#xff09;在PHP中&#…...

Python项目打包与依赖管理指南

在Python开发中&#xff0c;python文件需要在安装有python解释器的计算机的电脑上才能运行&#xff0c;但是在工作时&#xff0c;我们需要给客户介绍演示项目功能时并不一定可以条件安装解释器&#xff0c;而且这样做非常不方便。这时候我们可以打包项目&#xff0c;用于给客户…...

矿产资源潜力预测不确定性评价

研究目的&#xff1a; 不确定性评估&#xff1a; 到底什么叫不确定性&#xff0c;简单来说就是某区域内的矿产资源量&#xff0c;并不确定到底有多少&#xff0c;你需要给出一个评估或者分布。 研究方法&#xff1a; 1.以模糊集来表示某些量&#xff1a; 关于什么是模糊集&am…...

食堂采购系统开发:从需求分析到上线实施的完整指南

本篇文章&#xff0c;笔者将详细介绍食堂采购系统从需求分析到上线实施的完整过程&#xff0c;旨在为开发团队和管理者提供一个系统化的指南。 一、需求分析 1.用户需求 常见的需求包括&#xff1a; -采购计划管理 -供应商管理 -库存管理 -成本控制 -报表生成 2.系统功…...

C++ 数据结构

C 数据结构 引言 数据结构是计算机科学中的一个核心概念&#xff0c;它涉及到如何在计算机中组织和存储数据&#xff0c;以便高效地进行数据访问和修改。C作为一种高效的编程语言&#xff0c;提供了丰富的内置数据类型和库&#xff0c;支持各种复杂的数据结构实现。本文将探讨…...

Elasticsearch:评估搜索相关性 - 第 1 部分

作者&#xff1a;来自 Elastic Thanos Papaoikonomou, Thomas Veasey 这是一系列博客文章中的第一篇&#xff0c;讨论如何在更好地理解 BEIR 基准的背景下考虑评估你自己的搜索系统。我们将介绍具体的技巧和技术&#xff0c;以便在更好地理解 BEIR 的背景下改进你的搜索评估流程…...

超声波清洗机哪款好用?保姆级教学,教你手把手挑选适合自己的超声波清洗机

提及超声波清洗机&#xff0c;大家都不陌生&#xff0c;尤其是佩戴眼镜的小伙伴&#xff0c;眼镜的镜片长时间不清洁容易模糊不清&#xff0c;而超声波清洗机的出现&#xff0c;可以轻松清洗还不会损坏镜片&#xff0c;备受眼镜党喜爱。但由于现在市面上的超声波清洗机的款式太…...

vscode常用组件

1.vue-helper 启用后点击右下角注册&#xff0c;可以通过vue组件点击到源码里面 2.【Auto Close Tag】和【Auto Rename Tag】 3.setting---Auto Reveal Exclude vscode跳转node_modules下文件&#xff0c;没有切换定位到左侧菜单目录> 打开VSCode的setting配置&#xff…...

IDEA创建普通Java项目

环境准备 Java环境 运行javac查看java环境是否安装完成 开发工具Intellij IDEA 下载地址&#xff1a;https://www.jetbrains.com/idea/download/?sectionwindows 创建项目 点击新建项目 填入项目名字&#xff0c;项目路径&#xff0c;选择maven,点击下面的创建 运行项目 …...

华为“铁三角模式”在数据类项目中的应用和价值

引言&#xff1a;随着信息技术的飞速发展&#xff0c;企业纷纷踏上数字化转型的道路&#xff0c;希望通过数据分析和智能决策来提升企业竞争力。在这一过程中&#xff0c;数据类项目成为关键&#xff0c;它们旨在构建高效的数据治理和分析平台&#xff0c;为企业决策提供有力支…...

P1-AI产品经理--九五小庞

产品经理的定位 AI基于现有业务挖掘AI应用场景&#xff0c;服务提供商选择及算法定制等&#xff0c;配合已有产品完成整体产品工工资基于从事医疗行业的考虑&#xff0c;我们走的应该是AI产品经理&#xff08;软件型&#xff09; AI产品经理&#xff08;行业型&#xff09; AI…...

PHP手边酒店多商户版平台小程序系统源码

&#x1f3e8;【旅行新宠】手边酒店多商户版小程序&#xff0c;一键解锁住宿新体验&#xff01;&#x1f6cc; &#x1f308;【开篇&#xff1a;旅行新伴侣&#xff0c;尽在掌握】&#x1f308; 还在为旅行中的住宿选择而纠结吗&#xff1f;是时候告别繁琐的搜索和比价过程&a…...

计算机视觉7 kag比赛

Kaggle 是一个非常知名的数据竞赛平台&#xff0c;提供了许多计算机视觉相关的竞赛项目&#xff0c;以下是一些在 Kaggle 上可能会遇到的计算机视觉项目类型及相关的简单介绍和示例&#xff1a; 图像分类&#xff1a;给定一组图像&#xff0c;任务是将它们分类到不同的类别中。…...

Go 协程通道使用注意

目录 关闭channel 引入 不关闭通道是有风险的&#xff0c;主要存在两条&#xff1a; 如何优雅的关闭&#xff1f; 1.只有一个发送者 2.多个发送者 判断通道是否关闭 有缓存和无缓存的通道有什么区别&#xff1f; 错误的关闭通道 关闭channel close(chan)&#xff1a;关…...

React基础学习-Day04

React基础学习-Day04 常见的钩子函数及基础使用方式 1.useState useState 是 React 的一个 Hook&#xff0c;用于在函数组件中添加状态。它返回一个状态变量和一个更新该状态的函数。与类组件的 this.state 和 this.setState 相对应&#xff0c;useState 让函数组件也能拥有…...

python爬虫获取网易云音乐评论歌词以及歌曲地址

python爬虫获取网易云音乐评论歌词以及歌曲地址 一.寻找数据接口二.对负载分析三.寻找参数加密过程1.首先找到评论的请求包并找到发起程序2.寻找js加密的代码 四.扣取js的加密源码1.加密函数参数分析①.JSON.stringify(i0x)②bse6Y(["流泪", "强"])③bse6Y…...

中间件的理解

内容来源于学习网站整理。【一看就会】什么是前端开发的中间件&#xff1f;_哔哩哔哩_bilibili 每日八股文~白话说mq&#xff0c;消息中间件_哔哩哔哩_bilibili 例如&#xff1a; 1&#xff09;两个人打电话&#xff0c;中间的通信网络就是中间件。 2&#xff09;菜鸟驿站&…...

django实现用户的注册、登录、注销功能

创建django项目的步骤&#xff1a;Django项目的创建步骤-CSDN博客 一、前置工作 配置数据库&#xff0c;设置数据库引擎为mysql 1、在settings文件中找到DATABASES, 配置以下内容 DATABASES {"default": {ENGINE: django.db.backends.mysql, # 数据库引擎NAME: dja…...

星图平台双镜像方案:OpenClaw与百川2-13B的隔离部署技巧

星图平台双镜像方案&#xff1a;OpenClaw与百川2-13B的隔离部署技巧 1. 为什么需要双镜像隔离部署 去年我在尝试将OpenClaw接入本地大模型时&#xff0c;踩过一个典型的坑&#xff1a;当模型需要更新或维护时&#xff0c;整个自动化流程就会中断。最严重的一次&#xff0c;模…...

AI赋能Java开发:在快马平台轻松构建集成智能对话与代码分析的Java应用

最近尝试用Java结合AI能力做了个小项目&#xff0c;发现这种组合特别适合快速开发智能应用。在InsCode(快马)平台上实践后发现&#xff0c;整个过程比想象中简单很多&#xff0c;分享下具体实现思路。 项目框架搭建 用Spring Initializr创建基础项目&#xff0c;选择Web和Lombo…...

用于网页设计的 Claude Code

Claude Code 现在绝对算得上设计圈里最热的产品之一。它真正让人上头的地方&#xff0c;不是“会回答问题”&#xff0c;而是它能把你脑子里一个还没成型的想法&#xff0c;几分钟之内就往可实现的页面上推。也就是说&#xff0c;你不再只是停留在概念层&#xff0c;而是能很快…...

用MATLAB玩转三维可视化:手把手教你绘制动态曲面图(含peaks函数详解)

MATLAB三维可视化实战&#xff1a;从静态曲面到动态交互的全方位指南 科研工作者常面临海量数据的可视化挑战&#xff0c;而MATLAB提供的三维图形工具链能将这些抽象数字转化为直观的空间形态。本文将带您深入探索三维可视化的核心技巧&#xff0c;从基础绘图到高级交互&#x…...

包含多体型模板的AI虚拟智能试衣系统源码

温馨提示&#xff1a;文末有资源获取方式在电商竞争日益白热化的今天&#xff0c;商品展示图的质量直接决定了点击率与转化率。对于服装类目而言&#xff0c;传统模特拍摄不仅面临模特、摄影、场地的高昂成本&#xff0c;更受限于漫长的拍摄周期。为了解决这一行业痛点&#xf…...

卡梅德生物技术快报|高亲和力 VHH 抗体的快速筛选:磁珠直接偶联液相法的技术实现

摘要针对传统方法难以实现高亲和力 VHH 抗体的快速筛选这一行业痛点&#xff0c;本文阐述了基于磁珠直接偶联的液相筛选法在高亲和力 VHH 抗体的快速筛选中的技术原理、核心实验步骤及应用优势。该方法通过碳化二亚胺法实现半抗原与磁珠的直接共价偶联&#xff0c;消除载体蛋白…...

Davinci大数据可视化平台:企业级React TypeScript架构实战指南

Davinci大数据可视化平台&#xff1a;企业级React TypeScript架构实战指南 【免费下载链接】davinci edp963/davinci: DaVinci 是一个开源的大数据可视化平台&#xff0c;它可以处理大规模数据集并生成丰富的可视化报告&#xff0c;帮助企业或个人更好地理解和分析数据。 项目…...

Nacos 服务注册为什么默认是临时实例?

做 Spring Cloud 开发的同学&#xff0c;对 Nacos 肯定不陌生。大家平常写代码&#xff0c;配置文件里只要配好 Nacos 地址&#xff0c;程序一启动&#xff0c;服务就自动注册上去了。但不知道大家有没有留意过一个细节&#xff1a;当你把服务停掉&#xff0c;或者直接 Kill 进…...

国风AI绘画从零开始:Guohua Diffusion部署与使用教程,生成专属水墨作品

国风AI绘画从零开始&#xff1a;Guohua Diffusion部署与使用教程&#xff0c;生成专属水墨作品 想亲手创作一幅意境悠远的水墨山水&#xff0c;或是描绘一幅灵动飘逸的工笔花鸟吗&#xff1f;过去&#xff0c;这需要多年的绘画功底。现在&#xff0c;借助AI的力量&#xff0c;…...

5种实战Agent Skill设计模式,小白也能轻松掌握大模型技能(收藏备用)

本文介绍了5种经过实战验证的Agent Skill设计模式&#xff0c;旨在帮助开发者提升大模型应用质量。文章涵盖了工具封装器、生成器、审查器、反转模式和流水线等模式&#xff0c;并提供了代码示例和使用场景。这些模式分别解决了输出不一致、内部逻辑设计、代码审查、需求收集和…...