MTK Android P/Q system/vendor/super快速打包

2024-09-08 06:38

本文主要是介绍MTK Android P/Q system/vendor/super快速打包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、Android 新版本默认开启了动态分区,把system vendor  product等分区打包成一个super分区。这对于我们使用替换分区的方法来排查问题不是很方便,直接替换一个super也不知道到底是哪个部分导致的。所以我们需要自己制作super.img来缩小范围。下面讲讲如何快速生成system、vendor、super,以及vbmeta(校验image,不匹配可能会导致不开机)

二、快速生成system.img

传统做法,使用系统自带打包命令:make snod   ,这个命令在老版本android还是比较快的,但是新系统因为在执行打包之前还是会include 很多makefile,导致效率不高

新方法:通过out/build-full_$(PROJECT_NAME).ninja  这个文件可以找到各种image的生成命令。

只不过有的image生成命令很长,我们需要提取关键信息即可,因为我们是基于系统整编过的基础上,很多依赖直接使用即可无需重新生成

注意:若开启了把system当做跟目录,out/target/product/$(PROJECT_NAME)/root也会打包进system

需要source lunch
build/make/tools/releasetools/build_image.py out/target/product/$(PROJECT_NAME)/system out/target/product/$(PROJECT_NAME)/obj/PACKAGING/systemimage_intermediates/system_image_info.txt out/target/product/$(PROJECT_NAME)/obj/PACKAGING/systemimage_intermediates/system.img out/target/product/$(PROJECT_NAME)/systemcp out/target/product/$(PROJECT_NAME)/obj/PACKAGING/systemimage_intermediates/system.img   out/target/product/$(PROJECT_NAME)/system.img

三、生成vbmeta_system.img

out/host/linux-x86/bin/avbtool make_vbmeta_image --algorithm SHA256_RSA2048 --key device/mediatek/system/common/system_prvk.pem --padding_size 4096 --rollback_index 0  --include_descriptors_from_image out/target/product/$(PROJECT_NAME)/system.img  --include_descriptors_from_image out/target/product/$(PROJECT_NAME)/product.img --output out/target/product/$(PROJECT_NAME)/vbmeta_system.img

若替换super里的system  ,需要同时更新此文件并download

四、生成vendor.img

build/make/tools/releasetools/build_image.py out/target/product/$(PROJECT_NAME)/vendor out/target/product/$(PROJECT_NAME)/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt out/target/product/$(PROJECT_NAME)/vendor.img out/target/product/$(PROJECT_NAME)/system

五、生成vbmeta_vendor.img

out/host/linux-x86/bin/avbtool make_vbmeta_image --algorithm SHA256_RSA2048 --key device/mediatek/vendor/common/vendor_prvk.pem --padding_size 4096 --rollback_index 0  --include_descriptors_from_image out/target/product/$(PROJECT_NAME)/vendor.img --output out/target/product/$(PROJECT_NAME)/vbmeta_vendor.img

若替换super里的vendor ,需要同时更新此文件并download

六、生成super.img

需要source lunch
./build/make/tools/releasetools/build_super_image.py out/target/product/$(PROJECT_NAME)/obj/PACKAGING/superimage_debug_intermediates/misc_info.txt out/target/product/$(PROJECT_NAME)/super_new.img

七、生成vbmeta.img

/bin/bash -c "(mkdir -p out/target/product/$(PROJECT_NAME)/obj/avb_chain_keys ) && (out/host/linux-x86/bin/avbtool extract_public_key --key device/mediatek/vendor/common/boot_prvk.pem --output  out/target/product/$(PROJECT_NAME)/obj/avb_chain_keys/boot.avbpubkey ) && (out/host/linux-x86/bin/avbtool extract_public_key --key device/mediatek/vendor/common/recovery_prvk.pem --output  out/target/product/$(PROJECT_NAME)/obj/avb_chain_keys/recovery.avbpubkey ) && (out/host/linux-x86/bin/avbtool extract_public_key --key device/mediatek/system/common/system_prvk.pem --output  out/target/product/$(PROJECT_NAME)/obj/avb_chain_keys/vbmeta_system.avbpubkey ) && (out/host/linux-x86/bin/avbtool extract_public_key --key device/mediatek/vendor/common/vendor_prvk.pem --output  out/target/product/$(PROJECT_NAME)/obj/avb_chain_keys/vbmeta_vendor.avbpubkey ) && (out/host/linux-x86/bin/avbtool make_vbmeta_image --chain_partition boot:3:out/target/product/$(PROJECT_NAME)/obj/avb_chain_keys/boot.avbpubkey --include_descriptors_from_image out/target/product/$(PROJECT_NAME)/dtbo.img --chain_partition recovery:1:out/target/product/$(PROJECT_NAME)/obj/avb_chain_keys/recovery.avbpubkey --chain_partition vbmeta_system:2:out/target/product/$(PROJECT_NAME)/obj/avb_chain_keys/vbmeta_system.avbpubkey --chain_partition vbmeta_vendor:4:out/target/product/$(PROJECT_NAME)/obj/avb_chain_keys/vbmeta_vendor.avbpubkey --algorithm SHA256_RSA2048 --key device/mediatek/system/common/oem_prvk.pem --padding_size 4096 --rollback_index 0 --output out/target/product/$(PROJECT_NAME)/vbmeta.img ) && (rm -rf out/target/product/$(PROJECT_NAME)/obj/avb_chain_keys )"

替换super,不用更新vbmeta.img

使用时将$(PROJECT_NAME)替换为你的工程名

这篇关于MTK Android P/Q system/vendor/super快速打包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147399

相关文章

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

springboot3打包成war包,用tomcat8启动

1、在pom中,将打包类型改为war <packaging>war</packaging> 2、pom中排除SpringBoot内置的Tomcat容器并添加Tomcat依赖,用于编译和测试,         *依赖时一定设置 scope 为 provided (相当于 tomcat 依赖只在本地运行和测试的时候有效,         打包的时候会排除这个依赖)<scope>provided

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo