使用update包更新系统文件的过程

为只更新手机的一部分内容,而直接替换system中的文件,或想将app安装系统应用,可采用recovery模式下刷入update.zip包的方式实现这些需求。

这样生成的更新包相对于完整的刷机包来说不仅小很多,而且能更加快捷的修改手机中的文件或应用程序。

0x01 update包的组成

update.zip主要由两个文件夹组成,META-INF文件夹和system文件夹。

META-INF文件夹中包含签名的三个文件,以及刷机脚本update-script和从官方rom中提取的update-binary文件。

  

system文件夹中包含app文件夹,或framework文件夹。当需要刷入系统应用时,将应用程序放在system/app/目录下;更新core.odex文件或core.jar文件时,则放在system/framework/目录下。

每次修改更新包之后,都需要重新签名,相关的三个签名文件也会相应的被更改。

0x2 刷机脚本文件修改注意事项

由于只是更新系统中的部分文件,因此删除掉了完整刷机脚本中对system分区格式化的语句,保留了装载system分区的语句,以及释放刷机包中system目录文件到手机/system目录的语句:

format("ext4", "EMMC", "/dev/block/mmcblk0p43", "0");

mount("ext4", "EMMC", "/dev/block/mmcblk0p43", "/system");

package_extract_dir("system", "/system");

同时,删除了更新内核镜像文件boot.img的语句:

assert(package_extract_file("boot.img", "/tmp/boot.img"),

write_raw_image("/tmp/boot.img", "/dev/block/mmcblk0p40"),

delete("/tmp/boot.img"));

其它部分内容基本没做修改。需要注意的是,如果删除了set_perm或set_perm_recursive等相关权限设置的语句,可能会导致系统相关功能出现异常,因此建议不要删除这些内容。

0x3 刷机包的重新签名与刷入

根据需求在system的相应目录下放置好文件之后,如:

使用APKSign或其它工具对刷机包进行刷机即可。如果手机recovery模式下的sdcard和一般使用的不同时,建议在recovery模式下再将刷机包push进去。

时间: 2024-12-29 01:42:08

使用update包更新系统文件的过程的相关文章

安装Visual Studio 2013 update 2 更新包记录和新功能简单体验

昨天下载了进4个小时,将visual studio 2013 update 2 更新包和visual studio 2013 完整安装包(包含UPDATE2)的下载完成,今天抽出时间体验一下,昨天在网上看了一下英文翻译的说明,增加了一些支持和改进,我只是针对于我所看到的来操作使用一下,看看有啥变化吧.将ISO文件加载到虚拟光驱,然后开始安装更新包,界面弹出后告诉我需要大概3个多G的硬盘空间,嗨真是大啊.点击安装开始继续安装,我截个图如下 剩下是就是等着安装完成了,整个安装过程还是比较慢的,安装的

security update 补丁更新失败

安装卡在了7月的某一个补丁 windows\windowsupdate.log  找到如下错误 2014-08-03 16:02:45:665 1284 2264 PT +++++++++++  PT: Synchronizing server updates  +++++++++++2014-08-03 16:02:45:665 1284 2264 PT  + ServiceId = {3DA21691-E39D-4DA6-8A4B-B43877BCB1B7}, Server URL = ht

Microsoft Update客户端更新

?? 大家好, 微软Microsoft Update产品组官方博客于昨天宣布了有关最新的Windows Update客户端更新的消息.根据这则博客,微软从当日开始逐渐向所有Windows 7, Windows Server 2008, Windows 8, Windows RT和Windows Server 2012用户推送新的Microsoft Update和Windows Update客户端.此项客户端更新的主要目的是加强MU/WU客户端的安全性,以及使MU/WU客户端与服务器的通讯更为安全

Anaconda 包更新故障集锦(持续更新)

1. 用pip安装包keras,报错误信息 TypeError: string argument expected, got 'NoneType': PS C:\Users\GoFree> pip install keras --upgrade # 包更新语句 Collecting keras Downloading https://files.pythonhosted.org/packages/54/e8/eaff7a09349ae9bd40d3ebaf028b49f5e2392c771f29

R包更新的注意点

install.packages("installr") library(installr) updateR() 用上面的代码可以将R包更新到最新版,需要注意的一点是,后面安装过程中,指定R包安装目录时,需设定在原R包所在目录下.这样可以将原R包中的安装包直接copy过来,并选择是否升级 原文地址:https://www.cnblogs.com/zhengzh/p/9329056.html

SVN中基于Maven的Web项目更新到本地过程详解

环境 MyEclipse:10.7 Maven:3.1.1 概述 最近在做项目的时候,MyEclipse下载SVN上面基于Maven的Web项目总是出现很多问题,有时候搞了很半天,Maven项目还是出现叉号,最后总结了方法步骤,终于可以将出现的问题解决,在此,将重现从SVN上将基于Maven的Web项目变成本地MyEclipse中项目的过程,问题也在其中进行解决. 问题补充 在使用Myeclipse的部署Web项目的时候,在点击部署按钮的时候,没有任何反应,在此提供两种解决方法,问题如图1所示:

deb包的构建(dpkg-buildpackage)过程详细过程说明

/*********************************************************************  * Author  : Samson  * Date    : 07/04/2014  * Test platform:  *              3.11.0-12-generic #19-Ubuntu  *              GNU bash, version 4.2.45  * ****************************

第一篇:Unity3d游戏开发之移动端完整包更新方案

由于Unity没法进行热更新,也就是局部更新,所以如果你在设计之前没有考虑好使用Lua,反射,或者其他方式实现热更新,但是又要面临游戏上线那么你可以考虑使用完整包更新,其实这对于游戏包不是很大的情况下,也是一个不错的选择,当然设计者在设计之初都想好了热更新那就宁当别论了. Unity3d 在移动端考虑Android和Ios平台的完整包更新 实现逻辑: 首先检查本地的版本和服务器的版本是否相同,如果相同则直接进入游戏,如果不同则下载服务器的最新文件,然后根据最新文件到资源服务器下载最新的安装包 我

mssql sql高效关联子查询的update 批量更新

/* 使用带关联子查询的Update更新     --1.创建测试表 create TABLE Table1     (     a varchar(10),     b varchar(10),     c varchar(10),     CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED     (     a ASC     )     ) ON [PRIMARY] create TABLE Table2     (     a varchar(10