记一次 Android 源码编译刷机过程

0 背景

  为了能在开发设备上运行 adb root 命令得到 root 权限,获得更加强大的调试能力、开发体验,方便以后阅读源码时 Debug 跟踪、进行定制化开发,需要编译 Android 源码 userdebug 版本并刷入手机当中。

1 准备

1.1 硬盘

  首先 Android 源码占用内存很大,一般占用 200、300 G,恰逢固态硬盘降价,花费 400 置入了 1T 的 PCIE 4.0 固态硬盘。主板只有一个 M.2 插槽,于是买了一个 M.2 固态硬盘转接卡。

1.2 手机

  自己是想刷 Android 13 版本的,并且考虑到手机的流畅程度以及成本,花费 650 置入了 O 版(能够开启 BootLoader)的 Pixel 4。 Pixel 4 有 90 hz的刷新率,且能刷 Android 13 的代码。
  将 Android 源码某条分支的源码编译出 img 文件并刷入手机中,是需要 Google 提供的驱动文件的
比如 Pixel 4 可以刷的 Android 13 分支就有四条分支,我选择了其中的 TP1A.220624.014 ,对应是 android-13.0.0_r1 分支。
在这里插入图片描述
某台设备有什么分支可以刷可以参考一下链接:
Nexus 和 Pixel 的驱动程序二进制文件
BuildId 与 Android 源码分支的对应信息

1.3 Ubuntu 系统

  尝试在 Windows 系统的 Ubuntu 子系统上操作,但没成功,于是使用 UltraISO 刻录 Ubuntu 系统盘,给新买的硬盘刷了个 Ubuntu 系统,在新系统上进行操作。就是每次开机需要按 F12 进入 BIOS 选择系统。
  在 /etc/udev/rules.d 目录下添加 udev 规则包。否则当使用 adb 指令时会提示权限不足。

1.4 环境搭建

  下载代码需要用到 git 工具、repo 工具、编译环境
git 工具

sudo apt-get install git
git config --global user.email "test@test.com"
git config --global user.name "test"

repo

mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo > ~/bin/repo
chmod a+x ~/bin/repo
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo

编译环境

#jdk 在 Android 源码 prebuilts/jdk 中有,建议直接设置环境变量,而不是直接用 apt-get 安装
#sudo apt-get install openjdk-8-jdk
#sudo apt-get install openjdk-8-jre# 下列安装,可能会出问题,直接百度即可解决。问题比较容易处理
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache
sudo apt-get install libssl-dev

1.5 源码及驱动代码代码下载

git 安装

sudo apt-get install git
git config --global user.email "xxx@xx.com"
git config --global user.name "xxx"

repo 安装

mkdir ~/bin
# 下载 repo 文件
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo > ~/bin/repo
# 添加权限
chmod a+x ~/bin/repo

代码下载

# 配置 repo 的临时环境变量
PATH=~/bin:$PATH
# 下载想要下载的分支 
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-13.0.0_r1
# 同步代码
repo sync -j4

下载驱动文件
  在网址 Nexus 和 Pixel 的驱动程序二进制文件 中我们根据所选分支下载对应的驱动程序。比如这次 pixel4 选的 TP1A.220624.014。对应的是
在这里插入图片描述
  将驱动程序(sh脚本文件)下载解压并执行,执行之后多出 vendor 目录
在这里插入图片描述
注意: 如果不添加这个驱动程序,全编 AOSP 生成的镜像会缺少一些 img 文件。

1.6 全编代码

在 AOSP 目录下

source build/envsetup.sh
lunch
# 要编译的是 flame-userdebug,根据情况这里我选了 22
22
make -j4

  但是真正编译时会遇到一些问题,在百度了之后无非要修改 swap 的大小。还有 jdk 版本的问题,这时根据情况使用 aosp 中的即可。
在这里插入图片描述
编译成功之后的镜像文件在"/out/target/product/手机型号/" 目录下。
在这里插入图片描述

1.7 安装 android studio, 并将镜像刷入 Pixel 设备中

  因为要用到 adb,fastboot 等工具。下载 android studio 工具后就有。不用专门去找这些东西。下载之后在 .bashrc 文件中添加环境变量

export PATH=$PATH:/home/xxx/Android/Sdk/platform-tools

  让手机进入 bootloader

# 进入bootloader模式
adb reboot bootloader

  手机界面显示 bootloader模式之后,在 “/out/target/product/手机型号/” 目录下

export ANDROID_PRODUCT_OUT=./
# 自动刷入 -w双清 
fastboot flashall -w# 等刷入之后,重启手机
fastboot reboot

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/143072.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript 基础 DOM (四)

正则表达式正则表达式 正则基本使用 定义规则 const reg /表达式/其中/ /是正则表达式字面量正则表达式也是对象 使用正则 test()方法 用来查看正则表达式与指定的字符串是否匹配 如果正则表达式与指定的字符串匹配 ,返回true,否则false reg.test(…

苹果id怎么注册?老果粉教你创建新的Apple ID

苹果ID怎么注册?苹果ID又叫做Apple ID,这是我们用来访问Apple服务的账号,包括iCloud、App Store在内的苹果手机自带应用都需要我们登陆Apple ID才可以正常使用。该账号不仅仅只是一个登录账号,其中包含了我们大量的隐私信息&#…

如何重新设置苹果id密码_ios游戏apple账号分享韩国苹果id密码大全

韩区id申请注册流程和在国内申请注册账号流程不一样,所选地区和填写信息要求不一样,现在很多游戏或者其他软件只能在日本地区发行,想要下载这些软件就必须要注册日本地区的id账号就能下载。 申请注册韩区id除了要注意选择地区之外&#xff0c…

苹果注册会员账号

下面介绍个人开发者账号申请流程 1.1首先打开苹果开发者中心 如果已经注册过apple id,跳过注册,直接看后面步骤登录开发者中心申请! 点击立即创建您的apple id 2、跳转到apple id申请页面填写相关信息 名字用汉字或者拼音写上去(注…

苹果开发者公司账号注册流程注册新的苹果Apple Id并双重验证步骤

大概分为几个步骤: 1.需要一个未注册过开发者的苹果Apple Id (如果没有重新注册详见下文) 2.Apple Id需要开通双重验证 (详见下文) 3.申请公司的邓白氏码 申请流程:https://www.jianshu.com/p/31b7aa616…

Apple ID 的申请流程

Apple ID 申请可以在通过PC端申请也可以在IOS系统的手机上申请。本节就说说在PC端的申请流程。 1、打开苹果帐户注册网站:appleid.apple.com/cn,然后点击右上角的“创建 Apple ID” 2、按照提示填写对应的信息 回答的问题注意字符要大于等于3 然后…

苹果礼品卡导致Apple ID被封,怎么避免?

下载外区的苹果App常常需要买外区对应国家的礼品卡,尤其是玩游戏,我们游戏工会里面时不时有人的Apple ID被封,经历多了经验也就慢慢丰富了,后来在群里就专门强调几点注意事项,经过一年验证完全有效,基本上杜…

此apple id尚未用于App Store(如需帮助,请联系iTunes支持,网址www.apple.com/support/itunes/ww/)

使用MacBook Pro做开发,结果新注册的Apple ID在登录App Store的时候出现此apple id尚未用于App Store 填写相关信息时出现如需帮助,请联系iTunes支持,网址www.apple.com/support/itunes/ww/,如图: 解决办法&#x…

最新Apple苹果开发者账号AppleID注册流程

1、登陆开发者官网: https://developer.apple.com/ 2、如果有苹果设备,可以直接使用你设备的appleID,后面的步骤一样的,这是少了这个注册过程。下面说说没有appleID的注册流程。 点击开发者官网右上角account,进入开发者登陆页…

python加密算法

首先加密算法要引入hashlib模块,在python中用import hashlib引入 接下来如果要对一串数字进行加密操作如下 这里用a变量来接接收,md5里的数字就是要加密的内容 然后再内容后面加上.encode(“utf-8”)因为hashlib是对二进制进行…

python 代码加密

Python代码加密步骤 1、准备文件 main.py为要加密的主脚本import sys from PyQt5.QtWidgets import QApplication, QWidgetdef show_w():显示窗口app QApplication(sys.argv) # 所有的PyQt5应用必须创建一个应用(Application)对象。# sys.argv参数是一个…

python 加密-对exe加密

Python 是一种面向对象的解释型计算机程序设计语言,Python 语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。 在计算机内部,Python解释器把源代码转换成称为字节的中间形式,然后再它翻译计算机使用的机器语言并运行…

python封装成dll_Python加密成.so或dll

Python加密 如何封装Python代码,让别人方便调用,同时又能起到加密的作用,本文介绍如何封装成so文件和dll文件以及调用方式 首先需要配置环境 安装Cython gcc Linux下的.so文件 创建要封装的文件mytest.py import datetime class DataCe…

Python加密生成so文件与dll

Python加密 如何封装Python代码,让别人方便调用,同时又能起到加密的作用,本文介绍如何封装成so文件和dll文件以及调用方式 首先需要配置环境 安装Cython gcc Linux下的.so文件 创建要封装的文件mytest.py import datetime class DataCen…

用 Python 加密文件

生活中,有时候我们需要对一些重要的文件进行加密,Python 提供了诸如 hashlib,base64 等便于使用的加密库。 但对于日常学习而言,我们可以借助异或操作,实现一个简单的文件加密程序,从而强化自身的编程能力。…

python 算法加密

加密代码片段样例 文件名:iter_n.py import timedef iter_from_n(n):list_n []for index,value in enumerate(range(n)):list_n.append([index,value])return list_nif __name__"__main__":t1 time.time()iter_from_n(100000)t2 time.time()print (&…

Python加密word文档

大家好,这里是滑稽研究所。本期我们需要完成一个对word文档加密的程序。在翻阅了网上一些资料和文章后,认为使用‘异或’来加密word文档是比较方便且安全性有保障的。   在此之前,我们先了解一下异或是什么。简单来说,如果a、b两…

python常见加密方式总结踩坑小贴士

本文是向大家介绍python中常见的一些加密方式,在使用python的时候遇到数据加密的情况时,可以根据实际场景来选择加密的方式对数据进行加密,加强数据传输的安全性。 一.前言 日常工作中经常会看到各种加密算法,今天给大家带来的是…

常见的加密方式之python实现

文章目录 前言MD5加密sha1加密SHA256DES加密AES加密AES的ECB 模式实现AES的CBC 模式实现RSA加密 前言 常见的加密方式之python实现 编码与解码 通常所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。所以…

5种方法,加密你的Python代码 !

Python越来越热门了,2019年3月TIOBE编程语言排行榜上,Python更是罕见的击败了“霸榜三巨头”之一的C,挤进前三。 Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样&#…