android meta工具,android ota 升級包制作分析 (5 工具)

工具

1 mkbootfs

mkbootfs的源代碼在system/core/cpio中。

?

?

mkbootfs -f boot_filesystem_config.txt targetfiles/BOOT/RAMDISK | minigzip > ramdisk.img

2 mkbootimg

mkbootimg的源代碼在system/core/mkbootimg中。

mkbootimg --kernel kernel --ramdisk ramdisk.img --output /tmp/boot.img

3 minigzip

minigzip的源代碼在external/zlib中。

4 fs_config

源碼位于:build/tools/fs_config。

其中的fs_config.c包含了system/core/include/private/android_filesystem_config.h,真正權限配置和fs_config的實現都在這個頭文件中。

static const struct fs_path_config android_dirs[] = {

{ 00770, AID_SYSTEM, AID_CACHE, 0, "cache" },

{ 00771, AID_SYSTEM, AID_SYSTEM, 0, "data/app" },

{ 00771, AID_SYSTEM, AID_SYSTEM, 0, "data/app-private" },

{ 00771, AID_SYSTEM, AID_SYSTEM, 0, "data/dalvik-cache" },

{ 00771, AID_SYSTEM, AID_SYSTEM, 0, "data/data" },

{ 00771, AID_SHELL, AID_SHELL, 0, "data/local/tmp" },

{ 00771, AID_SHELL, AID_SHELL, 0, "data/local" },

{ 01771, AID_SYSTEM, AID_MISC, 0, "data/misc" },

{ 00770, AID_DHCP, AID_DHCP, 0, "data/misc/dhcp" },

{ 00775, AID_MEDIA_RW, AID_MEDIA_RW, 0, "data/media" },

{ 00775, AID_MEDIA_RW, AID_MEDIA_RW, 0, "data/media/Music" },

{ 00771, AID_SYSTEM, AID_SYSTEM, 0, "data" },

{ 00750, AID_ROOT, AID_SHELL, 0, "sbin" },

{ 00755, AID_ROOT, AID_SHELL, 0, "system/bin" },

{ 00755, AID_ROOT, AID_SHELL, 0, "system/vendor" },

{ 00755, AID_ROOT, AID_SHELL, 0, "system/xbin" },

{ 00755, AID_ROOT, AID_ROOT, 0, "system/etc/ppp" },

{ 00755, AID_ROOT, AID_SHELL, 0, "vendor" },

{ 00777, AID_ROOT, AID_ROOT, 0, "sdcard" },

{ 00755, AID_ROOT, AID_ROOT, 0, 0 },

};

static const struct fs_path_config android_files[] = {

{ 00440, AID_ROOT, AID_SHELL, 0, "system/etc/init.goldfish.rc" },

{ 00550, AID_ROOT, AID_SHELL, 0, "system/etc/init.goldfish.sh" },

{ 00440, AID_ROOT, AID_SHELL, 0, "system/etc/init.trout.rc" },

{ 00550, AID_ROOT, AID_SHELL, 0, "system/etc/init.ril" },

{ 00550, AID_ROOT, AID_SHELL, 0, "system/etc/init.testmenu" },

{ 00550, AID_DHCP, AID_SHELL, 0, "system/etc/dhcpcd/dhcpcd-run-hooks" },

{ 00444, AID_RADIO, AID_AUDIO, 0, "system/etc/AudioPara4.csv" },

{ 00555, AID_ROOT, AID_ROOT, 0, "system/etc/ppp/*" },

{ 00555, AID_ROOT, AID_ROOT, 0, "system/etc/rc.*" },

{ 00644, AID_SYSTEM, AID_SYSTEM, 0, "data/app/*" },

{ 00644, AID_MEDIA_RW, AID_MEDIA_RW, 0, "data/media/*" },

{ 00644, AID_SYSTEM, AID_SYSTEM, 0, "data/app-private/*" },

{ 00644, AID_APP, AID_APP, 0, "data/data/*" },

{ 00755, AID_ROOT, AID_ROOT, 0, "system/bin/ping" },

/* the following file is INTENTIONALLY set-gid and not set-uid.

* Do not change. */

{ 02750, AID_ROOT, AID_INET, 0, "system/bin/netcfg" },

/* the following five files are INTENTIONALLY set-uid, but they

* are NOT included on user builds. */

{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/su" },

{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/librank" },

{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/procrank" },

{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/procmem" },

{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/tcpdump" },

{ 04770, AID_ROOT, AID_RADIO, 0, "system/bin/pppd-ril" },

/* the following files have enhanced capabilities and ARE included in user builds. */

{ 00750, AID_ROOT, AID_SHELL, (1 << CAP_SETUID) | (1 << CAP_SETGID), "system/bin/run-as" },

{ 00755, AID_ROOT, AID_SHELL, 0, "system/bin/*" },

{ 00755, AID_ROOT, AID_ROOT, 0, "system/lib/valgrind/*" },

{ 00755, AID_ROOT, AID_SHELL, 0, "system/xbin/*" },

{ 00755, AID_ROOT, AID_SHELL, 0, "system/xbin/*" },

{ 00755, AID_ROOT, AID_SHELL, 0, "system/vendor/bin/*" },

{ 00755, AID_ROOT, AID_SHELL, 0, "vendor/bin/*" },

{ 00750, AID_ROOT, AID_SHELL, 0, "sbin/*" },

{ 00755, AID_ROOT, AID_ROOT, 0, "bin/*" },

{ 00750, AID_ROOT, AID_SHELL, 0, "init*" },

{ 00750, AID_ROOT, AID_SHELL, 0, "charger*" },

{ 00750, AID_ROOT, AID_SHELL, 0, "sbin/fs_mgr" },

{ 00640, AID_ROOT, AID_SHELL, 0, "fstab.*" },

{ 00644, AID_ROOT, AID_ROOT, 0, 0 },

};

5 imgdiff

工具imgdiff的源碼位于:recovery/applypatch。對應的應用補丁的工具為imgpatch。imgdiff用來處理*.gz,*.zip,*.apk,*.jar,*.img。

imgpatch以及下面的bspatch都存在于applypatch工具中。與官方的bspatch在輸入輸出以及錯誤處理上有一些不同。根據diff文件的開頭幾個字節可以判斷應該使用哪個補丁工具。開頭為“BSDIFF40”的用bspatch處理,開頭為“IMGDIFF2”用imgpatch處理。

6 bsdiff

工具bsdiff的源碼位于:external/bsdiff。對應的應用補丁的工具為bspatch。bsdiff能夠更高效地處理可執行文件。

7 signapk

signapk的源碼位于:build/tools/signapk。

使用方法:

signapk.jar -w

其中:-w表示對整個文件進行簽名。

簽名算法:

1. 程序遍歷update.apk包中的所有文件(entry),對非文件夾非簽名文件的文件,逐個生成SHA1的數字簽名信息,再用Base64進行編碼。

2. 如果-w整包簽,則將 證書.x509.pem 復制到 META-INF/com//otacert;

并在manifest對象中增加META-INF/com/android/otacert的SHA1摘要

3. 之后將生成的簽名寫入MANIFEST.MF文件。

4. 對前一步生成的Manifest,使用SHA1-RSA算法,用私鑰進行簽名。

5. 在CERT.RSA文件中保存公鑰、所采用的加密算法等信息。

簽名后,apk(zip)文件中多了下列文件

META-INF/MANIFEST.MF

META-INF/CERT.SF

META-INF/CERT.RSA

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537773.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537773.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537773.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

asp.net core輸出中文亂碼的問題

原文:asp.net core輸出中文亂碼的問題 摘要 在學習asp.net core的時候&#xff0c;嘗試在控制臺&#xff0c;或者頁面上輸出中文&#xff0c;會出現亂碼的問題。 問題重現 新建控制臺和站點 public class Program{public static void Main(string[] args){ Console.W…

android oom工具,Android OOM-Heap,MAT工具檢測內存泄露

概述在android的開發中&#xff0c;要時刻主要內存的分配和垃圾回收&#xff0c;因為系統為每一個dalvik虛擬機分配的內存是有限的&#xff0c;在google的G1中&#xff0c;分配的最大堆大小只有16M&#xff0c;后來的機器一般都為24M&#xff0c;實在是少的可憐。這樣就需要我們…

windows 端微信多開

假設微信安裝目錄為 "E:\Program Files\WeChat\WeChat.exe" 打開記事本&#xff0c;復制一下命令&#xff0c;保存為 bat 文件 echo off start /d "E:\Program Files\WeChat\" WeChat.exe start /d "E:\Program Files\WeChat\" WeChat.exe exi…

超詳細MFS網絡分布式文件系統

-----------------------MFS---------------------- (1)分布式原理 分布式文件系統( Distributed File System)是指文件系統管理的物理存儲資源不一定直接連接在本地節點上&#xff0c;而是通過計算機網絡與節點相連。簡單來說&#xff0c;就是把一些分散的(分布在局域網內各個…

markdown文件轉word文件

工具&#xff1a; https://github.com/jgm/pandoc/releases/tag/2.2.3.2 下載pandoc安裝包之后&#xff0c;像安裝普通軟件一樣點開安裝就可以了。安裝完成之后&#xff0c;打開cmd命令行&#xff0c;輸入pandoc -v&#xff0c;如果正常顯示出類似下面的信息就表明安裝成功&a…

android全面屏系統哪個版本開始,Android全面屏

所謂全面屏手機&#xff0c;就是屏幕縱橫比大于1.86的設備。例如&#xff1a;舉個例子.png官方文檔&#xff1a;If your app targets Android 8.0 (API level 26) or higher, it fills the entire screen, according to its layout.If your app targets Android 7.1 (API level…

AliOS Things聲源定位應用演示

摘要&#xff1a; 1. 概述 利用麥克風陣列進行聲源定位在智能降噪、語音增強、語音識別等領域有廣泛應用和研究前景。本文介紹基于AliOS Things STM32F413H Discovery開發板實現聲源定位算法集成和功能演示。 概述利用麥克風陣列進行聲源定位在智能降噪、語音增強、語音識別等…

Mysql 使用正則表達式

需求&#xff1a;匹配出姓名字段里非中文的 SELECT * FROM 表 WHERE REAL_NAME REGEXP ([\\u4e00-\\u9fa5]{1,20}|[a-zA-Z\\.\\s]{1,20}) ; 查詢結果如下

Android點擊返回鍵銷毀自己,Activity界面銷毀 軟鍵盤未收回

在項目開發過程中&#xff0c;界面包含EditText輸入框時&#xff0c;輸入內容時軟鍵盤彈起。但是此時我們調用界面中自定義的返回按鈕執行.finish()方法銷毀Activity后發現軟鍵盤并沒有跟隨關閉收回&#xff0c;參考了網上各種方法后&#xff0c;試驗總結出自己項目中可用的方案…

2、Collections操作(自定義類)的各種實現

2019獨角獸企業重金招聘Python工程師標準>>> 1、排序(sort) 要想實現排序&#xff0c;必須實現compare方法&#xff0c;這樣Collection才知道是怎樣的排序規則。普通的數據類型&#xff0c;比如&#xff1a;int 、String、long等都已經實現了Comparable接口&#xf…

Mysql sql語句積累

分組排序 #alter table zxfw_offline_qa add zx_number varchar(50) COMMENT 咨詢編號&#xff0c;提問日期提問順序 AFTER id;/* select (i : case when pre_consult_timeconsult_time then i 1 else 1 end ) rownum, qa.*,(pre_consult_time:consult_time) from zxfw_…

中綴表達式轉換成后綴表達式(只適用于加減乘除運算)

1 #include <iostream>2 #include <stack>3 #include <cctype>4 5 using namespace std;6 7 //獲取符號的優先級8 int getPriority(char c)9 { 10 int priority -1; 11 switch (c) { 12 case : 13 priority 1; 14 break; 15 …

android多接口請求參數,okhttp3 使用json參數post方式請求接口數據(android)

1. 谷歌自帶的json不支持像map一樣直接put字符串進去&#xff0c;所以先導入阿里的json包2. 創建json對象&#xff0c;并且放入所要請求的參數 //登錄 private void loginRequest() { String url Contents.url"login"; JSONObject json new JSONObject(); json.put…

由淺入深,一文掌握NGINX知識文集

&#x1f3c6;作者簡介&#xff0c;普修羅雙戰士&#xff0c;一直追求不斷學習和成長&#xff0c;在技術的道路上持續探索和實踐。 &#x1f3c6;多年互聯網行業從業經驗&#xff0c;歷任核心研發工程師&#xff0c;項目技術負責人。 &#x1f389;歡迎 &#x1f44d;點贊?評論…

MySQL not in查詢不出數據(MySQL not in 無效)

今天使用 MySQL 的 not in 進行查詢的時候&#xff0c;發現結果里面并沒有返回任何數據。SQL 語句沒有任何問題&#xff0c;但是結果集卻是空&#xff0c;實在無法理解。糾結了半天&#xff0c;最后使用 left join&#xff0c;兩表關聯&#xff0c;找到了目標數據。但是這樣的話…

Python語法特點如注釋規則、代碼縮進、編碼規范等

在Python中&#xff0c;通常包括3種類型的注釋&#xff0c;分別是單行注釋、多行注釋和中文編碼聲明注釋。單行注釋在Python中&#xff0c;使用“#”作為單行注釋的符號。從符號“#”開始直到換行為止&#xff0c;“#”后面所有的內容都作為注釋的內容&#xff0c;并被Python編…

修改android.jar教程,Android修改jar包文件

1、Android studio中新建java文件&#xff0c;取和將要修改的文件相同的文件名&#xff0c;把class文件中代碼復制過去&#xff0c;修改需要改動的代碼2、新建txt文件&#xff0c;將新建的Java文件按照依賴關系將路經添加到新建的txt文件中&#xff0c;被依賴的放在最前面(ps:此…

安卓市場上架總結

安卓上架截圖&#xff08;不要帶手機外觀&#xff09; 注意&#xff1a;截圖不能有二維碼小米 至少3張&#xff0c;480*854像素&#xff0c;JPG、PNG格式。騰訊應用寶 請上傳2-5張截圖&#xff08;尺寸保持一致&#xff09;&#xff0c;單張圖片不超過1M。截圖不能小于320*480像…

android 左右分欄聯動布局,Layout 布局(24 分欄)

基礎布局使用單一分欄創建基礎的柵格布局(:span“0~24”).el-row {margin-bottom: 20px;&:last-child {margin-bottom: 0;}}.el-col {border-radius: 4px;}.bg-purple-dark {background: #99a9bf;}.bg-purple {background: #d3dce6;}.bg-purple-light {background: #e5e9f2…

洛谷P4238 【模板】多項式求逆(NTT)

傳送門 學習了一下大佬的->這里 已知多項式$A(x)$&#xff0c;若存在$A(x)B(x)\equiv 1\pmod{x^n}$ 則稱$B(x)$為$A(x)$在模$x^n$下的逆元&#xff0c;記做$A^{-1}(x)$ 具體的來說的話&#xff0c;就是兩個多項式$A,B$相乘模$x^n$之后&#xff0c;所有次數大于等于$n$的項都…