首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

疑难问题之bsdiff

疑难问题之bsdiff 问题背景 项目中使用到了bsdiff命令进行增量包的生成,不过在使用中发现对于某些文件,bsdiff命令会卡住。...诊断问题 刚开始以为是操作系统的问题,换了个全新的系统,按网上的教程从http://www.daemonology.net/bsdiff/下载bsdiff的源码,重新编译得到bsdiff,这里把原来卡住的两个文件重新试了一次...看来这个是bsdiff本身存在问题,在网上搜索了下,终于发现有人遇过一样的问题。很奇怪,在国内也有很多人用bsdiff生成增量包,但却没人反馈这个问题。...这样就好办了,直接编译google版的bsdiff命令出来就好了。...mv $HOME/local/bin/bsdiff $HOME/local/bin/bsdiff2 效果 使用新的bsdiff2命令测试了下,目前生成增量包一切正常,再也没有卡住的现象了,而且占用的内存也比原来小不少

2.9K50

游戏差异更新—BSDiff算法解析

以上便是bsdiff算法的基本思想,并且作者也将该算法实现并开源出来,供所有有二进制差异更新需求的同学使用(下载链接:http://www.daemonology.net/bsdiff/ )。...随意选择两个可执行文件,这里就选择bsdiff工具里的bsdiff与bspatch,两个完全无关的可执行文件,bsdiff作为新文件,bspatch作为旧文件。...xiaoyzhang$ bsdiff bspatch bsdiff delta.patch xiaoyzhang$ ls -ll -rw-r--r-- 1 xiaoyzhang 1085706827...xiaoyzhang$ md5 bsdiff bspatch_new MD5 (bsdiff) = e775531d35bb8aff34ffd733fdf47605 MD5 (bspatch_new)...20.png 游戏更新还需要哪些能力 有了BSDiff,我们可以很方便的做到二进制文件的差异更新,但BSDiff也并非完美,比如其存在一些应对移动应用时的稳定性以及对DEX文件的压缩效率不高等问题。

28K100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    手把手带你实现Android增量更新

    然后我们需要生成.dll动态库,需要我们在配置中,将“配置类型”改为“动态库(.dll)” 编译生成.dll动态库后 , 赋值到服务器项目的目录下 , 或是Java项目也可以 。...4.创建JNI方法 , 修改main函数 既然知道了需要传入的参数 , 那么就可以创建一个Java工程 , 编写JNI方法了。...两个文件 com_dispatch_bsdiff_BsDiff.h中引入jni.h 将头文件com_dispatch_bsdiff_BsDiff.h引入到bsdiff.cpp文件中 5.编写调用的...编写bsdiff.cpp的native函数 //JNI 调用 JNIEXPORT void JNICALL Java_com_dispatch_bsdiff_BsDiff_diff (JNIEnv *env...修改了CMakeLists.txt文件的路径之后 , 需要在build.gradle中修改一下配置了: 并且配置一下build环境 4.然后就是在java代码中编写合并差分文件的JNI方法 public

    1.1K20

    Android 增量更新之文件的拆分和合并

    Apk文件的拆分和合并需要用bsdiff和bzip2这两个工具 官方下载: bsdiff:http://www.daemonology.net/bsdiff/ (包含了两个,一个window平台的...第三个是新文件的名称 第四个是拆分(.patch)文件名 利用下载下来的源码实现自己的可执行文件或者dll包 这边以生产dll动态库,在java工程调用为例 工具:vs2015 创建一个win32...中使用它(或相反)问题的解决方案 解决方法:右键工程 ---> 属性 ---> c++------>预编译头 ----> 预编译头 不使用预编译头 注:vs 切换平台之后 需要重新配置上述依赖 在java...工程调用生成的dll文件,实现文件拆分 将生成的BsDiffUtil.dll的文件复制到java项目工程 ?...${log-lib} ) 编写jni方法去调用bspatch的api 将bspatch的main方修改为bspatch_main; 创建一个在java文件中创建native方法 public class

    1.9K61

    高性能diff&patch算法 -- 如何将微信Apk的官方增量包20.4M缩小到7.0M

    丢弃前面old大小的数据,后面的就是新生成的new 优缺点: 容易实现,算法选择的好时效果很赞;适应范围较窄(数据较大时补丁可能突然异常变大),因为要压缩速度可能慢等 ---- 覆盖线diff算法 BsDiff...二维矩阵概念 覆盖线概念 后缀数组(QuickSort\libdivsufsort) 优缺点: 补丁小、diff内存占用大、运行慢、patch快 patch内存占用O(m+n)复杂度的误解: 这只是BsDiff...甚至允许C损坏)、速度快、可以支持超大文件;(xdelta对超大文件支持不好) ---- Apk的diff算法选择 zip、jar、apk的关系 (另外: ipa) Jar包签名(Apk v1 Sign) BsDiff...ApkDiffPatch: v1.0 BsDiff: v4.3 HDiffPatch: v2.2.6 Google Play patches: https://github.com/andrewhayden...=========================================================== BsDiff

    4.2K102

    Tinker Android热补丁框架

    Android热补丁技术应该分为以下两个流派: Native,代表有阿里的Dexposed、AndFix与腾讯的内部方案KKFix; Java,代表有Qzone的超级补丁、大众点评的nuwa、百度金融的...Native流派与Java流派都有着自己的优缺点。事实上从来都没有最好的方案,只有最适合自己的。...另一方面,由于无法增加变量与类等限制,无法做到功能发布级别; java的代表Qzone;最大挑战在于性能,即Dalvik平台存在插桩导致的性能损耗,Art平台由于地址偏移问题导致补丁包可能过大的问题;...它的粒度是Dex格式的每一项,可以充分利用原本Dex的信息,而BsDiff的粒度是文件,AndFix/QZone 的粒度为class。 关于微信所使用的三种算法,如图所示 ?...BsDiff;它格式无关,但对Dex效果不是特别好,而且非常不稳定。

    91330

    Android external扩展工程

    工程名称 工程描述 aes 高级加密标准(Advanced Encryption Standard) apache-http Http服务器 bison (主机)自动生成语法分析器程序 bluez 蓝牙库 bsdiff...(主机)用于二进制文件生成补丁 bzip2 (主机/目标机)压缩文件工具 clearsilver (主机)模板语言,包括Python、Java、Perl、C的库 dbus freedesktop下的开源...服务器和客户端 e2fsprogs (主机)ext2、3、4文件系统的工具 elfcopy (主机)ELF工具 elfutils (主机)ELF工具 embunit 嵌入式C系统的测试框架 emma (java...)java代码覆盖工具 esd (仅头文件) expat (主机/目标机)XML Parser fdlibm 精确实现IEEE754浮点数 freetype C语言实现的字体光栅化引擎制作的一个软件库...IBM支持的软件国际化的开源项目 iptables 建构在Xtables的架构下,定义“表”(tables)、“键”(chain)、“规则”(rules)来处理封包 jdiff (主机java库)比较工具

    82240

    微信 Tinker 的一切都在这里,包括源码 ( 一 )

    在笔者看来Android热补丁技术应该分为以下两个流派: Native,代表有阿里的Dexposed、AndFix与腾讯的内部方案KKFix; Java,代表有Qzone的超级补丁、大众点评的nuwa、...Native流派与Java流派都有着自己的优缺点,它们具体差异大家可参考上文。事实上从来都没有最好的方案,只有最适合自己的。...Tinker v1.0—性能极致追求之路 为了稳定性与兼容性,微信选择了Java流派。...但我们可以将新旧两个Dex的差异放到补丁包中,这里我们可以调研的方法有以下几个: [1501227617905_8506_1501227617797.jpg] 1、BsDiff;它格式无关,但对Dex...当前微信对于so与部分资源,依然使用bsdiff算法; 2、DexMerge;它主要问题在于合成时内存占用过大,一个12M的dex,峰值内存可能达到70多M; 3、DexDiff;通过深入Dex格式,实现一套生成产物小

    1.3K00
    领券