IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> aosp下载、编译、刷机和单编framework(android 12) -> 正文阅读

[移动开发]aosp下载、编译、刷机和单编framework(android 12)

我的设备:咸鱼上买的pixel 3a

aosp下载

1.安装repo

mkdir ~/bin
PATH=~/bin:$PATH
curl -sSL  'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
chmod a+x ~/bin/repo

这里需要注意,默认的 repo 使用的地址是 REPO_URL = ‘https://gerrit.googlesource.com/git-repo'?,这里我们需要修改 REPO_URL,否则会出现无法下载的情况

  1. 修改方法1:在你的 rc 文件里面,加入一条配置即可:REPO_URL=”https://gerrit-googlesource.proxy.ustclug.org/git-repo"
  2. 修改方法2:直接打开 ~/bin/repo, 把 REPO_URL 一行替换成下面的: REPO_URL = ‘https://gerrit-googlesource.proxy.ustclug.org/git-repo'

?2.安装git,配置个人信息

git config --global user.name "Your Name" 
git config --global user.email "you@example.com"

3.初始化repo仓库

根据自己的设备名去这里找到适合自己的tag版本 --->?build-numbers

build ID

标记版本支持的设备安全补丁级别
SP2A.220505.002android-12.1.0_r5Android12LPixel 3a、Pixel 3a XL、Pixel 4、Pixel 4a、Pixel 4a (5G)、Pixel 4 XL、Pixel 5、Pixel 5a (5G)、Pixel 6、Pixel 6 Pro2022-05-05

?搜索Pixel 3a,发现可以刷很多tag版本,随便挑一个,标记为android-12.1.0_r5,这个就是repo init时的-b 参数,build ID后续也会用到。

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b  android-12.0.0_r5

4.同步代码

上面步骤三只是下载了 .repo 文件,具体的代码还需要执行 repo sync 来进行下载。由于镜像站的限制和下载过程中可能会遇到的问题,建议大家用 -j4 来下载

repo sync -j4

搞一个 sh 脚本来循环下载

#!/bin/bash
repo sync -j4
while [ $? -ne 0 ]
do
echo "======sync failed ,re-sync again======"
sleep 3
repo sync -j4
done

具体方法

touch repo.sh  # 1. 创建 repo.sh 文件
vim repo.sh # 2. 复制上面的脚本内容到 repo.sh 里面,这里你可以使用你自己喜欢的方法打开并修改文件,比如 vscode
chmod a+x repo.sh #3. 修改权限
./repo.sh # 4. 运行脚本,万事大吉

5.补充一点自己遇到的问题

repo报错,真是急死我了!!!

mqb@666:~/android-12.1.0_r5$ repo --version
Traceback (most recent call last):
  File "/home/mqb/bin/repo", line 30, in <module>
    import shlex
ModuleNotFoundError: No module named 'shlex'

最终找到了解决办法,将所有用到repo的地方替换为python3 ~/bin/repo,成功解决

mqb@666:~/android-12.1.0_r5$ python3 ~/bin/repo --version
repo version v2.22
       (from https://gerrit-googlesource.proxy.ustclug.org/git-repo)
       (tracking refs/heads/stable)
       (Thu, 17 Feb 2022 21:57:55 +0000)
repo launcher version 2.21
       (from /home/mqb/bin/repo)
       (currently at 2.22)
repo User-Agent git-repo/2.22 (Linux) git/2.37.0 Python/3.8.10
git 2.37.0
git User-Agent git/2.37.0 (Linux) git-repo/2.22
Python 3.8.10 (default, Mar 15 2022, 12:22:08) 
[GCC 9.4.0]
OS Linux 5.4.0-121-generic (#137-Ubuntu SMP Wed Jun 15 13:33:07 UTC 2022)
CPU x86_64 (x86_64)
Bug reports: https://bugs.chromium.org/p/gerrit/issues/entry?template=Repo+tool+issue

可能会有别的解决办法,但是我觉得这个办法就挺好。

到这里需要休息会,时间较长,具体多久看自己电脑配置了!

编译

1.下载特定 Tag 的代码所对应的驱动

特定tag版本的驱动地址https://developers.google.cn/android/drivers这时就用的上文提到的build ID(我的是SP2A.220505.002)?, 根据build ID找到自己要下载的驱动

?点击两个Link,下载并解压,会得到两个.sh脚本文件,把这两个脚本文件移动到代码根目录。

2.驱动提取

确认两个.sh文件都放到代码根目录了

mqb@666:~/android-12.1.0_r5$ ls | grep extract
extract-google_devices-sargo.sh
extract-qcom-sargo.sh

接下来,分别执行两个脚本即可

./extract-google_devices-sargo.sh
./extract-qcom-sargo.sh

这里会让输入两次I ACCEPT,需要注意下回车键不要一直按着不松开。

3.设置编译环境

参考:搭建构建环境 ?|? Android 开源项目 ?|? Android Open Source Projecthttps://source.android.google.cn/setup/build/initializing

Ubuntu 18.04 以上直接运行:

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

4.设置代码编译环境

source build/envsetup.sh

或者

. build/envsetup.sh

5.选择编译目标

lunch

这里会让你选择你的机器的编号,在这里可以进行确认--->?选择设备build

?我的设备是Pixel 3a, 那么就是 aosp_sargo_userdebug。填数字编号或者这个字符串都可以。

6.全部编译

使用 m 构建所有内容。m 可以使用 -jN 参数处理并行任务。如果您没有提供 -j 参数,构建系统会自动选择您认为最适合您系统的并行任务计数。

m

编译结束后,会有build completed successfully的打印以及image的路径。

刷机

首先,cd到image所在目录

mqb@666:~/android-12.1.0_r5/out/target/product/sargo$ 

sargo是Piexel 3a的代号,不同机器代号不一样,这个前文也提到了。

下面执行三条指令即可,一般第二个执行完就已经开机了,如果没开机可以试下第三个。

adb reboot fastboot

# 等待手机进入 fastboot 界面之后
fastboot flashall -w

# 刷机完成之后,执行 fastboot reboot 长期系统即可
fastboot reboot

单编framework

1. source ./build/envsetup.sh(在Android12代码的根目录下)
2. lunch #(还是跟前面一样的方法)
3. make framework-minus-apex(进行部分编译)

编译完之后还是会有编译成功的打印以及frmework.jar的路径。

那么cd到framework.jar所在的目录下:

mqb@666:~/android-12.1.0_r5/out/target/product/generic/system/framework$

这个时候需要root和remount下

adb root

adb remount

接下来的一步,非常关键!

#需要删除oat , arm 以及 arm64
rm -r oat
rm -r arm
rm -r arm64

现在就需要将framework.jar push到手记里了

adb push framework.jar /system/framework/

最后,重启下机器让修改生效

adb shell stop

adb shell start

#我的sargo执行adb shell start 没反应,只好adb reboot
adb reboot

可以通过logcat看看自己加的log有没有打印,验证push是否生效!

至此,完整的一套流程就算是走完了。当然,中间可能会碰到一些小问题,写这篇笔记的时候都忘了,不过好在随手百度下就可以解决。

为尊重他人劳动成果,这里附上两篇参考的优秀帖子:

aosp下载编译参考这篇文章

单编framework参考这篇文章

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 23:03:58  更:2022-07-04 23:06:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 2:55:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码