pixel 3xl 安卓与内核代码下载、编译与烧入全流程(含安卓源码部分编译)

pixel 3xl 安卓与内核代码下载、编译与烧入全流程(含安卓源码部分编译)

环境搭建

建议:ubuntu20.04最好,ubuntu18.04应该也可

建议:最大磁盘大小350GB以上,内存16GB以上,4个CPU内核以上

安卓源码下载

一、准备下载环境

1、安装Python 3.9

  • sudo apt update
  • sudo apt install software-properties-common
  • sudo add-apt-repository ppa:deadsnakes/ppa
  • sudo apt install python3.9
  • sudo apt-get install python

2、安装git

  • sudo apt-get upgrade
  • sudo apt-get install git
  • git config --global user.email “xxx@gmail.com”
  • git config --global user.name “xxx”
    (xxx 填自己的信息)

3、安装curl

  • sudo apt-get install curl

4、配置环境变量 安装repo

  • mkdir ~/bin
  • PATH=~/bin:$PATH
  • curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
  • chmod a+x ~/bin/repo

打开主目录bin文件夹下的repo

REPO_URL = 'https://gerrit.googlesource.com/git-repo'

改为REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

二、下载源代码

1、创建目录

  • mkdir android12.0.0
  • cd android12.0.0

2、初始化仓库

  • repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

切换分支

  • repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-12.0.0_r1
    (要和自己手机里的版本进行对应,位置在 Android 版本中的版本号。进入该网页查看对应路径,然后修改android-12.0.0_r1

3、同步

  • repo sync

安卓源码编译

一、准备编译环境

1、安装jdk

  • sudo apt-get update
  • sudo apt-get install openjdk-8-jdk

2、使用 ubuntu 14+,需要安装以下依赖包

  • sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g+±multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

3、安装libncurses5

  • sudo apt install libncurses5

4、构建编译环境依赖

  • 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 libncurses5

二、下载编译驱动

进入该网页找对所下载安卓源代码版本所对应的驱动,之前的版本和此处的驱动要与手机对应

点击链接中对应版本的Link下载机器对应的驱动编译脚本文件并解压,得到extract-google_devices-crosshatch.shextract-qcom-crosshatch.sh(不同手机对应不同文件),放到源码的根目录执行(会让输入 I ACCEPT,回车别按的太快 之后ctrl+c 跳过),执行后会得到vender目录

  • ./extract-qcom-crosshatch.sh(自行修改为手机对应驱动编译脚本文件)
  • ./extract-google_devices-crosshatch.sh(自行修改为手机对应驱动编译脚本文件)

三、开始编译

安卓源码刷机

一、准备刷机环境

1、fastboot 安装

  • sudo apt-get install android-tools-fastboot
💥 报错

E: Invalid operation install android-tools-fastboot

💥 解决
- sudo apt-get update 更新系统
- sudo apt-get upgrade 更新软件包
- sudo apt-get install android-tools-adb android-tools-fastboot 安装android-tools-adb和android-tools-fastboot

2、安装kvm

  • sudo apt-get install qemu-kvm

二、开始刷机

1、进入reboot-bootloader模式

  • adb reboot bootloader
  • fastboot reboot-bootloader

2、配置ANDROID_PRODUCT_OUT环境

  • export ANDROID_PRODUCT_OUT=/home/xxx/android12.0.0/out/target/product/crosshatch
    (/home/xxx/android12.0.0/是编译过后的源代码目录 注意要用自己的路径替代)

3、刷机

  • fastboot flashall -w
💥 报错

FAILED (remote: Partition should be flashed in fastbootd)

💥 解决

下载最新的SDK工具包:https://developer.android.com/studio/releases/platform-tools.html?hl=zh-cn,解压工具包

在 /usr/bin 目录下删除 adb 和 fastboot

- sudo rm adb
- sudo rm fastboot

把工具包中的 adb 和 fastboot 复制到 /usr/bin

- sudo cp adb /usr/bin
- sudo cp fastboot /usr/bin

赋予权限

- su 进入root
- chmod 777 adb
- chmod 777 fastboot

重新从 1. 进入reboot-bootloader模式 开始执行命令

内核源码构建与烧入

一、下载相应分支的源代码

在该网页中找到自己手机对应的内核版本

  • mkdir android-kernel && cd android-kernel
  • repo init -u https://android.googlesource.com/kernel/manifest -b android-msm-crosshatch-4.9-android12
    (将 android-msm-crosshatch-4.9-android12 替换为自己手机的内核版本)
💥 报错

manifests:
fatal: unable to access 'https://android.googlesource.com/kernel/manifest/': Failed to connect to [android.googlesource.com](http://android.googlesource.com/) port 443: Connection timed out
manifests: sleeping 4.0 seconds before retrying

manifests:
fatal: unable to access 'https://android.googlesource.com/kernel/manifest/': Failed to connect to [android.googlesource.com](http://android.googlesource.com/) port 443: Connection timed out
fatal: cannot obtain manifest https://android.googlesource.com/kernel/manifest

💥 解决

属于连接超时,在 Ubuntu 中挂梯子,然后在终端中输入:

git config --global https.proxy http://127.0.0.1:{VPN端口号}

  • repo sync

二、构建内核(编译)

  • build/build.sh
💥 报错

private/msm-google/scripts/extract-cert.c:21:10: fatal error: 'openssl/bio.h' file not found

#include <openssl/bio.h>
               ^~~~~~~~~~

💥 解决

- sudo apt-get install libssl-dev 安装libssl-dev

三、运行内核(烧入)

方案1:永久刷入手机

在编译好的安卓源码目录下有一个out文件夹,将目录out/target/product/crosshatch目录下的*.img和kernel删除

  • rm *.img kernel

然后备份安卓源码的目录device/google/crosshatch-kernel下的Image.lz4,用内核源码中的Image.lz4进行替换

回到安卓目录后进行:

  • source build/envsetup.sh
  • make

方案2(推荐):快速刷入手机,但手机重启后恢复原样

进入 out/android-msm-pixel-4.9/private/msm-google/arch/arm64/boot 目录

  • adb reboot bootloader
  • fastboot boot Image.lz4-dtb

部分编译安卓源码(framework)

1. framework-minus-apex

编译:

编译完后观察framework.jar是否发生了更新
(framework.jar的路径:out/target/product/crosshatch/system/framework)

刷机:

  1. adb root
  2. adb remount (将’/system’ 部分置于可写入的模式)
  3. adb reboot
  4. adb root
  5. adb remount
  6. adb shell
  7. cd system/framework

删除下面三个文件(没有就不删):

  1. rm -r oat
  2. rm -r arm
  3. rm -r arm64
  4. exit(退出adbshell模式)
  5. adb push /home/xxx/android12.0.0/out/target/product/crosshatch/system/framework/framework.jar /system/framework
    (将刚刚编译新生成的framework.jar导入手机中,framework.jar的路径需要修改成自己的路径,将 /home/xxx/android12.0.0/ 换成自己的路径)

下面两步重启zygote:

  1. adb shell stop
  2. adb shell start

重启手机

  1. adb reboot

2. libhwui

编译:

译完后会更新
/out/target/product/flame/system/lib
/out/target/product/flame/system/lib64
中的libhwui.so 库文件

刷机(刷入 .so 库文件):

  1. adb root
  2. adb remount (将’/system’ 部分置于可写入的模式)
  3. adb push /home/xxx/android12.0.0/out/target/product/crosshatch/system/lib/libhwui.so /system/lib
    adb push libhwui.so /system/lib
    (将 /home/xxx/android12.0.0/ 换成自己的路径)
  4. adb push libhwui.so /system/lib
  5. adb push libhwui.so /system/lib64
  6. adb push /home/cyrusandy/android12.0.0/out/target/product/crosshatch/system/lib64/libhwui.so /system/lib64
    (将路径修改成自己的,分别将对应.so文件刷入对应lib文件夹)

下面两步重启zygote:

  1. adb shell stop
  2. adb shell start

重启手机

  1. adb reboot
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
基于Android Studio开发的购票App是一个可以用于购买火车票的移动应用程序。它提供了填写预定票数和选择对应座位的功能。在选择座位时,粉红色表示他人已选,橙色表示当前用户选择,黑色表示未选择。当填写预定票数并失去焦点时,程序会自动计算总价,并显示在界面上。这个App可以用于Android移动开发学习项目、课程设计和毕业设计等。你可以使用Android Studio或Intellij IDEA专业版作为开发工具,操作系统可以是Windows 10,还需要安装JDK 11、Gradle(版本为7.0.0)和模拟器AVD(例如Pixel 3XL,API 30)。你可以将项目源码导入开发工具中,根据自己的需求修改Gradle版本、JDK环境和SDK路径,然后构建并运行项目。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [基于android studio开发的火车票购票系统app,android移动开发课设,毕业设计](https://blog.csdn.net/hjjshua/article/details/131210665)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [基于安卓android studio的电影订票选座APP设计 前台后台](https://blog.csdn.net/coder1998/article/details/120940700)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值