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

相关文章

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Maven项目打包时添加本地Jar包的操作步骤

《Maven项目打包时添加本地Jar包的操作步骤》在Maven项目开发中,我们经常会遇到需要引入本地Jar包的场景,比如使用未发布到中央仓库的第三方库或者处理版本冲突的依赖项,本文将详细介绍如何通过M... 目录一、适用场景说明​二、核心操作命令​1. 命令格式解析​2. 实战案例演示​三、项目配置步骤​1

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2