MK81.0增量更新生成教程

从Android 8.1开始,魔趣的完整固件追随谷歌采用Block-Based,废弃File-Based。
设备维护者若有需求自行生成增量更新包,需要备份编译过程中产生的中间文件。

此命令用来设定中间文件的备份目录,若未设定,则不会备份中间文件。(请在编译前执行)

export MK_OTA_TARGET_PATH=/mnt/develop/Android/OTATARGET

当中间文件数量>=2时,即可进行增量更新包的生成。

具体步骤如下:

1.指定增量更新的输入目录

export MK_OTA_INPUT=/mnt/develop/Android/OTATARGET

2.指定增量更新的输出目录

export MK_OTA_EXTRA=/mnt/develop/Android/OTAPATCH

3.执行增量更新生成命令,例如

ota_all UNOFFICIAL dumpling

火钳刘明


这个是先执行命令,然后再mka bacon,编译么

现执行完所有export,再mka baocn,再ota_all。

两次都得执行export 么,还是说只执行一次就可以了

https://www.runoob.com/linux/linux-comm-export.html

谢谢,还有一个问题就是,必须得make bacon么,make otapackage可以么

反正我用mka bacon,你可以选择相信我或自己试。

请教各位 ,我按照上述方法 生成了一个增量升级包。

按照整包的安装方式 放到内存中 在recovery模式下 去安装这个增量包 发现 修改的内容并没有生效,(我直接去掉了一个apk,发现编译时间啥的倒是变了),

直接刷整包 发现是有变化的。

纠结中,请问 是刷的方式不对吗? 还是编译的包有问题

我建议你把OTA包解开看看updater-script里干了啥。

看了下updater-script recovery模式下 打印的log 都是对的 。

增量升级后 重启 会有系统正在更新提示 ,但是发现 在进度条走小点 就直接结束了。

然后发现system 下修改的内容没有变化。

不是让你看log,是让你看updater-script里有没有一条删除你那个apk的指令。

没有发现 删除那个apk的指令。

不过全包升级 apk确实没有了

你两次编译之间有clean吗…

我对比了下 生成的两个中间包。OTATARGET 这个目录下的

发现能比较出 差异 就是 我去掉了一个apk

生成增量包 我用的是 ota_all EXPERIMENTAL lavender

按理说 这样的话 会在 updater-script中体现才对。。。

你好 我尝试了 重新clean 并且重新编译了 两次

两次生成的中间包 对比了 确实有差异 这次我修改了 一些prop属性值 在device目录下 以及去除两个apk的操作

生成的增量包中 还是没有去除apk的指令,安装完升级包 apk没有被去掉 prop属性值发生了变化。

好像还是在制作包的时候 有问题,请问 “ota_all EXPERIMENTAL lavender” 这么写有问题吗?

一下是:updater-script部分代码:

ui_print(“Patching files…”);
set_progress(0.158333); apply_patch("/system/lib/libart.so", “-”, 9dc94b3a9ee614a383d46afbfdc7e33e37bbe3a8, 5812, 139df157c4d5ce9c8608592b1f09237d3c285d37, package_extract_file(“patch/system/lib/libart.so.p”));
set_progress(0.216666); apply_patch("/system/lib/libhwui.so", “-”, e4c768ba8a07a5124986a2848671a9d196d41b4a, 5716, b69cd39a60f31923b38676f95f7cbaa0ace27324, package_extract_file(“patch/system/lib/libhwui.so.p”));
set_progress(0.275000); apply_patch("/system/lib64/libart-compiler.so", “-”, 0ed77de74c496be8a0a40b2ce7ded1005d2d8933, 3120, d39df299044a6593e2c8fb1869e400158485feeb, package_extract_file(“patch/system/lib64/libart-compiler.so.p”));
set_progress(0.333333); apply_patch("/system/lib64/libart.so", “-”, 24c7bb26b268b2481ef680641648e2d350adb87f, 7636, 9d61cfda453788ff94c73866d1b95d7af3ec49bd, package_extract_file(“patch/system/lib64/libart.so.p”));
set_progress(0.391666); apply_patch("/system/lib64/libhwui.so", “-”, d7b3f295dbcb651fa1b053dd0993055eeb7c799c, 7516, 88ee6aada1f367a7616a68a9cd09f7a582fb302a, package_extract_file(“patch/system/lib64/libhwui.so.p”));
set_progress(0.450000); apply_patch("/system/build.prop", “-”, 773d69e5b8a71860da4e349bb02530c8862b2903, 12, f757d180ef08558e252c955085e246ebd0b038d1, package_extract_file(“patch/system/build.prop.p”));
set_progress(0.508333); apply_patch("/system/bin/install-recovery.sh", “-”, f9f6262c923f1a559c7080691a7c2665c5dfa09f, 4, 20a434c48c2ffe94761b08bde9af5df9cee15c5e, package_extract_file(“patch/system/bin/install-recovery.sh.p”));
set_progress(0.566666); apply_patch("/system/bin/adbd", “-”, 0e7201de81262e8a3121382d951909680416bd66, 1720, de9f0fbcb9db14086a032c18ac166c2b71d04d96, package_extract_file(“patch/system/bin/adbd.p”));
set_progress(0.625000); apply_patch("/system/etc/security/otacerts.zip", “-”, 9b4952a8e3dd22b81f759b970357b6161fdf67d0, 4, b60e562d925b530c656816b1a4b050278bdb4379, package_extract_file(“patch/system/etc/security/otacerts.zip.p”));
set_progress(0.683333); apply_patch("/system/priv-app/Snap/Snap.apk", “-”, 2fb33e78c80f544c6fd55684aa0a3719dc4fe0a6, 8448, 2eaff2ac7e865a9217b9bc62c0618e9745a0763f, package_extract_file(“patch/system/priv-app/Snap/Snap.apk.p”));
set_progress(0.741666); apply_patch("/system/etc/prop.default", “-”, 257886f9159b7d6f0394898fbbbf7f6e302d14a4, 4, e6f886d3cd33163614dad35bbe1189deff187278, package_extract_file(“patch/system/etc/prop.default.p”));
set_progress(0.800000); apply_patch("/vendor/build.prop", “-”, 720063865b4d9ed017a6fb9674653a84f21d36de, 4, afeb8279cb22181a0f84906779e9f4ae72d975cb, package_extract_file(“patch/vendor/build.prop.p”));

@martincz

你好 我尝试用源码自带的工具去生成差分包, ./build/tools/releasetools/ota_from_target_files

但是会在releasetools.py中下面这块报错:
AttributeError:‘DeviceSpecificParams’object has no attribute ‘input_zip’

def AddTrustZoneAssertion(info, input_zip):
android_info = info.input_zip.read(“OTA/android-info.txt”)

看了下导出生成的中间包 里面releasetools.py代码也是这样的。

是没用对吗 用魔趣的 ota_all命令 倒是可以正常生成包 就是存在上述问题

另外有个问题 mka otapackage 和 mka bacon 生成的中间包 应该都一样吧 我之前验证都是用的 mka bacon

你好 反复 试了 两次 删除应用操作 还是没能生效,

请问下 做增量升级包脚本文件在哪个位置,

ANDROID_BUILD_TOP/vendor/mk/prebuilt/host/linux-x86/gen_ota

这个代码 可以在哪里看到 源码吗 或者 能否辛苦 哪一位 确认下 魔趣制包工具 在做 删除apk 的时候 是不是会有问题 还是说我自己环境的问题