日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/11 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的android meta工具,android ota 升级包制作分析 (5 工具)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。