首页 > 其他 > 详细

编译AOSP并刷入Pixel设备

时间:2020-11-10 14:20:52      阅读:59      评论:0      收藏:0      [点我收藏+]

我的设备是*鱼上淘的Pixel 2, 2015年之后的设备刷写步骤基本一致(Pixel 2XL, Pixel 3, Pixel 3XL, Pixel 4)

上一篇博客讲了如何下载编译AOSP, 但只能编译出模拟器版本, 缺少厂商驱动(没有vendor目录), 不能用来刷机, 因此首先要下载厂商驱动

下载驱动

https://developers.google.com/android/drivers 包含AOSP非master分支Nexus and Pixel设备的驱动. 这里我们下载 驱动 与上篇提到的分支 android-8.1.0_r35 对应

将下载的2个tar文件放到aosp根目录 解压, 安装驱动

 

# 解压得到2个sh自释放文件
extract-google_devices-walleye.sh  extract-qcom-walleye.sh
# 安装 
sh extract-google_devices-walleye.sh
sh extract-qcom-walleye.sh

# 看完license输入 I ACCEPT 安装完成, 此时ls会看到vendor文件夹

重新编译AOSP

source build/envsetup.sh
lunch aosp_walleye-userdebug
# 经历漫长的等待后, 编译出镜像

刷写镜像 

1. 解锁

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

2. 刷写设备

fastboot flashall -w # -w选项意思wipe data, 会清空手机上的所有数据

刷好设备, 即可体验原版Android系统了, 但原版系统连上WiFi后, 总是提示网络连接不可用

技术分享图片

为啥嗫-因为原版系统的网络探针访问的是Google的服务器,不够科xue的网络肯定是连不上了. 这个WiFi图标让人很不爽,下面我们来改点东西修复它.

修改Captive Portal Server

打开 vim frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java 可以看到如下两行代码

// Default configuration values for captive portal detection probes.
private static final String DEFAULT_HTTPS_URL     = "https://www.google.com/generate_204";
private static final String DEFAULT_HTTP_URL      =
            "http://connectivitycheck.gstatic.com/generate_204";

这就是AOSP默认的检测网络是否畅通的探针地址, AOSP默认使用https (如果你没有通过adb修改的话)

现在修改为如下:

// https://captive.v2ex.co/generate_204 is also acceptable 
// 这里我们改为小米的, V2EX的也可以, 我测试这里小米的快一点
private static final String DEFAULT_HTTPS_URL = "https://connect.rom.miui.com/generate_204"; private static final String DEFAULT_HTTP_URL = "http://connect.rom.miui.com/generate_204";

 重新编译, 生成亲的系统镜像, 因为framework位于system.img, 所以这里我们单独刷system分区就可以.

# 重新编译, 成功后 可见类似输出

[ 99% 615/616] Install system fs image: out/target/product/walleye/system.img
out/target/product/walleye/system.img+ maxsize=2740531200 blocksize=135168 total=1077064032 reserve=27709440
[100% 616/616] Target vbmeta image: out/target/product/walleye/vbmeta.img

单刷system分区

fastboot flash system system.img
fastboot flash system_a system_other.img
fastboot set_active b              # 将slot b设为启动分区
fastboot reboot

 由于Android8之后采用A/B更新, 所以有2套分区, 刷分区方式和以往不同, 参考: https://wertherzhang.com/android8-partiton-table/

技术分享图片

 

补充一下: 一般修改framework目录的代码, 重新编译单刷system分区即可, 但有时可能会更新到其它分区的镜像, 要以make的最终结果为准, 比如上面我的日志, vbmeta.img镜像也有更新, 则vbmeta.img也要刷入设备, 还有一种方法是到out目录下, 执行 ls -tl 看哪些镜像的修改时间是最新的, 就刷哪些.  如果有漏刷则可能导致无法进入Android系统. 

  

 

编译AOSP并刷入Pixel设备

原文:https://www.cnblogs.com/ciml/p/13714036.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!