- **版权声明: **本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!
答:为了突破某些限制,也为了个性化系统,如修改壁纸、修改开机动画、内置软件等
答:首先体积上的区别,完整包大约700M,OTA包则视内容大小决定,通常为几十M或几M
答:首先体积上的大大减少可以省一些网络流量,其次增量更新能确保你的一些设置得以保留
脚本路径 META-INF\com\google\android\updater-script
1#校验机型 并提示
2getprop("ro.product.device") == "AVNTG2A10" || abort("This package is for \"AVNTG2A10\" devices; this is a \"" + getprop("ro.product.device") + "\".");
3#设置进度条
4show_progress(0.500000, 0);
5#格式化磁盘,OTA时候,请注释掉或删除
6format("ext4", "EMMC", "/dev/block/mmcblk0p5", "0", "/system");
7#挂载/system
8mount("ext4", "EMMC", "/dev/block/mmcblk0p5", "/system");
9#释放更新包内容到指定位置
10package_extract_dir("system", "/system");
11#创建软连接
12symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
13symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
14symlink("libGLESv2.so", "/system/lib/libGLESv3.so");
15symlink("mksh", "/system/bin/sh");
16symlink("toolbox", "/system/bin/cat", "/system/bin/chcon",
17 "/system/bin/chmod", "/system/bin/chown", "/system/bin/clear",
18 "/system/bin/cmp", "/system/bin/cp", "/system/bin/date",
19 "/system/bin/dd", "/system/bin/df", "/system/bin/dmesg",
20 "/system/bin/du", "/system/bin/getenforce", "/system/bin/getevent",
21 "/system/bin/getprop", "/system/bin/getsebool", "/system/bin/grep",
22 "/system/bin/hd", "/system/bin/id", "/system/bin/ifconfig",
23 "/system/bin/iftop", "/system/bin/insmod", "/system/bin/ioctl",
24 "/system/bin/ionice", "/system/bin/kill", "/system/bin/ln",
25 "/system/bin/load_policy", "/system/bin/log", "/system/bin/ls",
26 "/system/bin/lsmod", "/system/bin/lsof", "/system/bin/md5",
27 "/system/bin/mkdir", "/system/bin/mkswap", "/system/bin/mount",
28 "/system/bin/mv", "/system/bin/nandread", "/system/bin/netstat",
29 "/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv",
30 "/system/bin/ps", "/system/bin/readlink", "/system/bin/renice",
31 "/system/bin/restorecon", "/system/bin/rm", "/system/bin/rmdir",
32 "/system/bin/rmmod", "/system/bin/route", "/system/bin/runcon",
33 "/system/bin/schedtop", "/system/bin/sendevent",
34 "/system/bin/setconsole", "/system/bin/setenforce",
35 "/system/bin/setprop", "/system/bin/setsebool", "/system/bin/sleep",
36 "/system/bin/smd", "/system/bin/start", "/system/bin/stop",
37 "/system/bin/swapoff", "/system/bin/swapon", "/system/bin/sync",
38 "/system/bin/top", "/system/bin/touch", "/system/bin/umount",
39 "/system/bin/uptime", "/system/bin/vmstat", "/system/bin/watchprops",
40 "/system/bin/wipe");
41#设置文件权限
42set_metadata_recursive("/system", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
43set_metadata_recursive("/system/bin", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
44set_metadata("/system/bin/app_process", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:zygote_exec:s0");
45set_metadata("/system/bin/clatd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:clatd_exec:s0");
46set_metadata("/system/bin/dbus-daemon", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:dbusd_exec:s0");
47set_metadata("/system/bin/debuggerd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:debuggerd_exec:s0");
48set_metadata("/system/bin/dhcpcd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:dhcp_exec:s0");
49set_metadata("/system/bin/dnsmasq", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:dnsmasq_exec:s0");
50set_metadata("/system/bin/drmserver", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:drmserver_exec:s0");
51set_metadata("/system/bin/hostapd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:hostapd_exec:s0");
52set_metadata("/system/bin/init.gprs-pppd", "uid", 0, "gid", 1001, "mode", 04777, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
53set_metadata("/system/bin/installd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:installd_exec:s0");
54set_metadata("/system/bin/keystore", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:keystore_exec:s0");
55set_metadata("/system/bin/mediaserver", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:mediaserver_exec:s0");
56set_metadata("/system/bin/mksh", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:shell_exec:s0");
57set_metadata("/system/bin/modemconfig.sh", "uid", 0, "gid", 2000, "mode", 04777, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
58set_metadata("/system/bin/mtpd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:mtp_exec:s0");
59set_metadata("/system/bin/netcfg", "uid", 0, "gid", 3003, "mode", 02750, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
60set_metadata("/system/bin/netd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:netd_exec:s0");
61set_metadata("/system/bin/ping", "uid", 0, "gid", 0, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:ping_exec:s0");
62set_metadata("/system/bin/pppd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:ppp_exec:s0");
63set_metadata("/system/bin/racoon", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:racoon_exec:s0");
64set_metadata("/system/bin/rild", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:rild_exec:s0");
65set_metadata("/system/bin/rtl_hostapd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:hostapd_exec:s0");
66set_metadata("/system/bin/rtl_wpa_supplicant", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:wpa_exec:s0");
67set_metadata("/system/bin/run-as", "uid", 0, "gid", 2000, "mode", 0750, "capabilities", 0xc0, "selabel", "u:object_r:runas_exec:s0");
68set_metadata("/system/bin/sdcard", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:sdcardd_exec:s0");
69set_metadata("/system/bin/servicemanager", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:servicemanager_exec:s0");
70set_metadata("/system/bin/stop_pppd", "uid", 0, "gid", 1001, "mode", 04777, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
71set_metadata("/system/bin/surfaceflinger", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:surfaceflinger_exec:s0");
72set_metadata("/system/bin/vold", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:vold_exec:s0");
73set_metadata("/system/bin/wpa_supplicant", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:wpa_exec:s0");
74set_metadata_recursive("/system/etc/dhcpcd", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:dhcp_system_file:s0");
75set_metadata("/system/etc/dhcpcd/dhcpcd-run-hooks", "uid", 1014, "gid", 2000, "mode", 0550, "capabilities", 0x0, "selabel", "u:object_r:dhcp_system_file:s0");
76set_metadata_recursive("/system/etc/ppp", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0555, "capabilities", 0x0, "selabel", "u:object_r:ppp_system_file:s0");
77set_metadata_recursive("/system/vendor", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
78set_metadata("/system/vendor/bin/wwan-tear-down", "uid", 0, "gid", 1001, "mode", 04777, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
79set_metadata("/system/vendor/etc/audio_effects.conf", "uid", 0, "gid", 0, "mode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
80set_metadata("/system/vendor/lib/libbt-vendor.so", "uid", 0, "gid", 0, "mode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
81set_metadata_recursive("/system/xbin", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
82set_metadata("/system/xbin/tcpdump", "uid", 0, "gid", 0, "mode", 06755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
83show_progress(0.200000, 0);
84show_progress(0.200000, 10);
85#输出
86ui_print("upgrade boot");
87#释放boot.img ota非必须
88package_extract_file("boot.img", "/dev/block/mmcblk0p1");
89ui_print("upgrade boot_backup");
90package_extract_file("boot.img", "/dev/block/mmcblk0p10");
91ui_print("TS upgrade u-boot-6q.bin start...");
92ui_print("TS upgrade u-boot-6q.bin end...");
93show_progress(0.100000, 0);
94#移除挂载
95unmount("/system");制作OTA中重要的步骤则是修改更新脚本,以上更新脚本中已标注
把需要更新的内容放在同级目录下,打包为zip包即可
最后ota包签名即可使用