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.1.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版本的驱动地址icon-default.png?t=N7T8https://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 Projecticon-default.png?t=N7T8https://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/sargo/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

 五、单编services

make services
adb push services.jar /system/framework/
adb push services.jar.prof /system/framework/
adb push services.jar.bprof /system/framework/

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

-----------------------------------------------------2023.11.13 ----------------------------

六、启动模拟器

最近我的pixel3a坏了,只能玩模拟器了

source build/envsetup.sh
lunch sdk_phone_x86_64
make -jx
emulator -writable-system (不跟后面的参数无法写入文件)

关于更多模拟器相关的东西可以移步官网 关于emulator

----------------------------------------------------2023.11.13-----------------------------------

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

aosp下载编译参考这篇文章

单编framework参考这篇文章

  • 9
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安卓夜问

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值