一、背景

已经在AOSP 7.1.1 nexus 5x上面实现了修改位置打卡,现在是想在pixel3中继续尝试。

作者:会飞的笨猫

二、如何选择代码

要选择有对应驱动版本的代码分支,如果没有标明,强行用其他版本的驱动来编译刷机不知道是否可行。

比如我选择的情况是这样的。

https://developers.google.com/android/drivers#bluelinepd1a.180720.030

https://source.android.com/docs/setup/about/build-numbers?hl=zh-cn

这里是查代码分支和驱动版本的网站。

为什么呢?因为我的网盘中的Android10代码有这个分支,如果通过repo的方式下载,我网络太差了,容易失败,相信很多人放弃都会卡在这一步,下个代码都下不了。

我们之间下载某个分支的代码就行了,前提是这个分支刚好有驱动。

复制代号:QQ3A.200805.001

去驱动的网页上面搜索:

在这里找到你的手机和对应代号的驱动。

android-10.0.0_r41 -> QQ3A.200805.001 > Pixel 3 binaries for Android 10.0.0 (QQ3A.200805.001)

关联起来,点击下载那2个文件就行了,先保存起来,到时候参与编译的。

代码地址:链接: https://pan.baidu.com/s/1-U_53CtqMAb0ZsuEn_zLMQ 提取码: ktut

下载好驱动,代码。

三、编译环境

Ubuntu 1804

安装好openjdk8

和下面一堆东西。

如果安装不了,请切换国内的源,快很多。(怎么切源,自己处理)

sudo apt-get install -y 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 -y tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install -y dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install -y git-core gnupg flex bison gperf build-essential
sudo apt-get install -y zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install -y libc6-dev-i386
sudo apt-get install -y lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install -y libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install -y lib32z1-dev ccache
sudo apt-get install -y bc python flex bison gperf libsdl-dev libesd0-dev build-essential zip curl
sudo apt-get install -y libssl-dev liblz4-tool
sudo apt-get install -y libesd-java libwxgtk3.0-dev squashfs-tools pngcrush schedtool libxml2
sudo apt-get install -y lzop schedtool lib32readline-dev libswitch-perl libssl-dev

创建虚拟机的时候硬盘如果空间足够,尽量给多点比如300g,我给了虚拟机200g。

编译好之后我的虚拟机可用空间剩余20g了。

虚拟机内存至少16g。如果编译过程中遇到oom,内存不够,可以关机了加点,编译的进度会保留的。

四、准备编译

进入源码根目录,解压驱动。

用7z解压驱动包得到sh,如果安装7z,自己解决。

tar zxvf google_devices-blueline-qq.3a.200805.001-466a3cb1.tgztar zxvf qcom-blueline-200805.001-a5511ad3.tgz解压后得到2个sh文件extract-开头的。

执行sh文件

./extract-

情况和http://www.debuglive.cn/article/1036000920720113664文章类似,都是按空格继续,最后要手动输入I ACCEPT。两个文件都是一样的流程。

如果开始编译的时候遇到这样的错误

find vendor: permission denied

给驱动文件夹权限。

sudo chmod -R 777 vendor

到此开始编译。

源码根目录输入:

source build/envsetup.sh回车
lunch回车

我们的手机pixel3就选择blueline这个产品,userdebug模式刷机完成就打开adb调试,有su。

开始编译:

make -j4
回车由于配置低就用4线程编译,如果你配置高,就配置多点

开始后你可能会遇到这个错误:

test github.com/google/blueprint/pathtools
FAILED: out/soong/.bootstrap/blueprint-pathtools/test/test.passed
out/soong/.bootstrap/bin/gotestrunner -p ./build/blueprint/pathtools -f out/soong/.bootstrap/blueprint-pathtools/test/test.passed -- out/soong/.bootstrap/blueprint-pathtools/test/test -test.short
--- FAIL: TestGlobEscapes (0.02s)--- FAIL: TestGlobEscapes/**/* (0.02s)glob_test.go:562: incorrect matches list:glob_test.go:562:  pattern: "**/*"glob_test.go:562:      got: []string{"a/", "b", "a/a"}glob_test.go:562: expected: []string{"*", "**/", "?", "a/", "b", "**/*", "**/a", "**/b/", "**/b/b", "a/a"}glob_test.go:562: incorrect deps list:glob_test.go:562:  pattern: "**/*"glob_test.go:562:      got: []string{".", "a"}glob_test.go:562: expected: []string{".", "**", "**/b", "a"}--- FAIL: TestGlobEscapes/**/\* (0.00s)glob_test.go:562: incorrect matches list:glob_test.go:562:  pattern: "**/\\*"glob_test.go:562:      got: []string(nil)glob_test.go:562: expected: []string{"*", "**/*"}glob_test.go:562: incorrect deps list:glob_test.go:562:  pattern: "**/\\*"glob_test.go:562:      got: []string{".", "a"}glob_test.go:562: expected: []string{".", "**", "**/b", "a"}--- FAIL: TestGlobEscapes/\*\*/* (0.00s)glob_test.go:562: incorrect matches list:glob_test.go:562:  pattern: "\\*\\*/*"glob_test.go:562:      got: []string(nil)glob_test.go:562: expected: []string{"**/*", "**/a", "**/b/"}glob_test.go:562: incorrect deps list:glob_test.go:562:  pattern: "\\*\\*/*"glob_test.go:562:      got: []string{"."}glob_test.go:562: expected: []string{".", "**"}--- FAIL: TestGlobEscapes/\*\*/**/* (0.00s)glob_test.go:562: incorrect matches list:glob_test.go:562:  pattern: "\\*\\*/**/*"glob_test.go:562:      got: []string(nil)glob_test.go:562: expected: []string{"**/*", "**/a", "**/b/", "**/b/b"}glob_test.go:562: incorrect deps list:glob_test.go:562:  pattern: "\\*\\*/**/*"glob_test.go:562:      got: []string{"."}glob_test.go:562: expected: []string{".", "**", "**/b"}
FAIL
18:54:13 soong bootstrap failed with: exit status 1

根据这个博客的方法,可以解决https://www.cnblogs.com/juwan/p/16848838.html。

就是把源码根目录下build/blueprint/Blueprints:71: "pathtools/glob_test.go"和fs_test.go删除了保存就好了,找了几个小时的错误,就这个有用。

继续make -j4。

编译完成。

五、刷入手机pixel3中

注意条件:

1:pixel3解开bl锁

2:必须退出登录的所有google账号,后果自负(懂的都懂)

3:usb接口已经配置好访问权限。

开始刷机。

手机连接电脑,触发虚拟机选择连接的设备,选择虚拟机就行。

adb devices检查手机状态,如果已经连接会显示
sfasdfadf  devices

我在这里遇到问题,我的手机之前系统是Android9,和现在编译的代码版本不一样,而且boot给我修改过的。

如果直接刷机,可能会遇到这样的错误。

fastboot flashall -w
--------------------------------------------
Bootloader Version...: b4s4-0.1-5613380
Baseband Version.....: g670-00011-190411-B-5457439
Serial Number........: XXXXXXXXXX
--------------------------------------------
Checking 'product'                                 OKAY [  0.057s]
Setting current slot to 'a'                        OKAY [  0.372s]
Sending 'boot_a' (65536 KB)                        OKAY [  1.850s]
Writing 'boot_a'                                   OKAY [  0.349s]
Sending 'dtbo_a' (8192 KB)                         OKAY [  0.320s]
Writing 'dtbo_a'                                   OKAY [  0.095s]
Sending 'vbmeta_a' (4 KB)                          OKAY [  0.120s]
Writing 'vbmeta_a'                                 OKAY [  0.066s]
Rebooting into fastboot                            FAILED (remote: 'Unsupported reboot option reboot-fastboot')
fastboot: error: Command failed

然后手机就挂了

查了资料,说是引导和当前编译的系统版本的不一样。

去这个地址:https://developers.google.com/android/images#blueline

下载完成之后,解压zip,然后手机连接电脑,手机开机和音量下一起按住,等待进入BootLoader模式。

进入模式之后,电脑如果win,双击flash-all.bat,Mac和Linux执行./flash-all.sh就行。进入刷机,可能重启数次。

刷机完成之后,打开开发者模式,再次连接电脑,虚拟机连接手机。

进入源码根目录中,配置下fastboot。

cd out/host/linux-x86/bin执行sudo chown root:root fastboot && sudo chmod +s fastboot输入你的虚拟机密码,回车。

回到根目录下

ANDROID_PRODUCT_OUT=out/target/product/blueline

开始刷机

如果你的手机开机,先重启
adb reboot bootloader重启到bootloader后fastboot devices看看手机连接情况fastboot flashall -w

手机重启之后,虚拟机选择连接的手机设备就行了,重启多次。

这个时候手机会自动重启。

开始玩耍吧~

本文由安全后厨团队分享,转载请注明来源,违者必究!

Android源码定制(2)——Android10.0的编译流程相关推荐

  1. 如何利用Android源码定制你想要的系统桌面?

    如何利用Android源码定制你想要的系统桌面?比如:   这样的桌面很简洁,看起来很舒适,那如何在做才能够达到这样的效果呢?下面讲述我的定制方式. 要能够达到这样的效果,做了如下改动 1. 将所有应 ...

  2. Android源码定制(1)——Android6.0源码编译

    一.前言 最近在研究Xposed框架定制,恰好又看到看雪上两个大佬关于源码定制和Xposed源码定制的帖子,所以尝试基于Android6.0版本,详细记录一下从源码下载到Xposed框架定制的全过程. ...

  3. Android源码定制(5)——root指纹定制与抹除

    1.前言 本文为源码定制学习的root指纹抹除篇,通过本文的学习,读者可以掌握Android指纹的基本定制能力和root定制能力,本文参考了看雪大佬应用root检测通杀篇,为实验记录笔记.有问题,可以 ...

  4. Android源码配置第三方应用电池白名单流程分析笔记

    这里以MTK6765 Android S举例说明,Android系统在加载客户应用白名单的过程. 首先Android系统可以根据不同手机厂商的需要进行源码的定制,当然定制应用白名单也是可以的,一般情况 ...

  5. 【Android 源码学习】系统架构和启动流程

    Android 源码学习 系统架构和启动流程 望舒课堂 学习记录整理.以及以下参考文章的整理汇总.便于我个人的学习记录. 感谢IngresGe,Gityuan的精彩文章.为我们这些初探android系 ...

  6. Android源码目录结构-4.0

    Android 4.0 |– Makefile |– bionic (bionic C库) |– bootable (启动引导相关代码) |– build (存放系统编译规则及generic等基础开发 ...

  7. android 自定义关机界面,android源码探索之定制android关机界面的方法

    本文实例讲述了android源码探索之定制android关机界面的方法.分享给大家供大家参考.具体如下: 在Android系统中,长按Power键默认会弹出对话框让你选择"飞行模式" ...

  8. android源码编译并刷入nexus 6p手机

    来自"梧桐那时雨"的博客:https://blog.csdn.net/fuchaosz/article/details/52473660 1 前言 经过一周的奋战,终于从谷歌官网上 ...

  9. Android源码配置默认输入法

    文章目录 Android源码定制默认输入法 声明 Android源码修改默认输入法 关于配置默认输入法的包名和类名 修改说明 Android源码定制默认输入法 声明 郑重声明:博文为原创内容,可以转载 ...

最新文章

  1. BZOJ2877 NOI2012魔幻棋盘(二维线段树)
  2. 一个“Internal”牵扯出的代码泄露,阿里云独家回应
  3. html5 服务器手机编程,html5实现服务器发送事件
  4. LeetCode 1277. 统计全为 1 的正方形子矩阵(DP)
  5. $.ajax返回的JSON无法执行success只进行error的解决方法
  6. 冬小麦病虫害的高光谱识别方法研究
  7. vim怎么配置只有打开特定文件高亮_vimrc里各种配置的含义
  8. 15.导入网表及status介绍[原创]
  9. java获取weblogic路径_weblogic下java web项目获取根路径
  10. java入门第二天如何使用Elipse
  11. LayUI文档和技术支持网站
  12. 深入浅出PHP amp; MySQL,深入浅出 PHP MySQL
  13. python-更新word目录
  14. python寻找所有三位数素数_寻找所有的素数的python实现
  15. python hist函数_Python Pandas.DataFrame.hist()用法及代码示例
  16. 在windows环境下可以直接运行的word2vec.c 并带有详细注释
  17. 【Java_Spring详解】
  18. Getaverse,走向Web3的远方桥梁
  19. 在职场要避免这些“潜规则”
  20. 那一年,我与电脑结下了不解之缘

热门文章

  1. 自己搭建一台MC服务器
  2. 25中让你精力充沛的方法
  3. html clear属性值,【Web前端基础知识】clear使用方法
  4. Centos7 x86服务器一键部署ES集群/单机shell
  5. 改oracle监听程序端口号,windows下如何修改oracle的默认监听端口号port
  6. python断言方法assert
  7. BZOJ 2150. 部落战争(最小路径覆盖问题)【BZOJ千题计划】
  8. 工业图像异常检测最新研究总结(2019-2020)
  9. 在性能测试中考虑时间和CPU使用率
  10. linux桌面xfce美化_为什么要为轻量级Linux桌面选择Xfce