All Projects → sisong → Apkdiffpatch

sisong / Apkdiffpatch

Licence: mit
a C++ library and command-line tools for Zip(Jar,Apk) file Diff & Patch; create minimal delta/differential; support Jar sign(apk v1 sign) & apk v2,v3 sign .

Projects that are alternatives of or similar to Apkdiffpatch

Hdiffpatch
a C\C++ library and command-line tools for Diff & Patch between binary files or directories(folder); cross-platform; run fast; create small delta/differential; support large files and limit memory requires when diff & patch.
Stars: ✭ 459 (+279.34%)
Mutual labels:  update, patch, diff
Git Follow
Follow lifetime changes of a pathspec in Git.
Stars: ✭ 25 (-79.34%)
Mutual labels:  patch, diff
Kodexplorer
A web based file manager,web IDE / browser based code editor
Stars: ✭ 5,490 (+4437.19%)
Mutual labels:  zip, archive
Zipper
🗳A library to create, read and modify ZIP archive files, written in Swift.
Stars: ✭ 38 (-68.6%)
Mutual labels:  zip, archive
Diff Match Patch
Diff Match Patch is a high-performance library in multiple languages that manipulates plain text.
Stars: ✭ 4,910 (+3957.85%)
Mutual labels:  patch, diff
Patch Package
Fix broken node modules instantly 🏃🏽‍♀️💨
Stars: ✭ 6,062 (+4909.92%)
Mutual labels:  patch, diff
Singlefilez
Web Extension for Firefox/Chrome/MS Edge and CLI tool to save a faithful copy of an entire web page in a self-extracting HTML/ZIP polyglot file
Stars: ✭ 882 (+628.93%)
Mutual labels:  zip, archive
Westore
更好的小程序项目架构
Stars: ✭ 3,897 (+3120.66%)
Mutual labels:  update, diff
Archivemounter
Mounts archives like disk images (macOS)
Stars: ✭ 77 (-36.36%)
Mutual labels:  zip, archive
Backgroundupdate
后台更新APP(两句代码实现)
Stars: ✭ 80 (-33.88%)
Mutual labels:  apk, update
Dareblopy
Data Reading Blocks for Python
Stars: ✭ 82 (-32.23%)
Mutual labels:  zip, archive
Nupdate
A comfortable update solution for .NET-applications.
Stars: ✭ 394 (+225.62%)
Mutual labels:  update, patch
Similar
A high level diffing library for rust based on diffs
Stars: ✭ 386 (+219.01%)
Mutual labels:  patch, diff
Libzip
A C library for reading, creating, and modifying zip archives.
Stars: ✭ 379 (+213.22%)
Mutual labels:  zip, archive
Mzip Android
An Android compress and extract library support popular compression format such as rar, zip
Stars: ✭ 95 (-21.49%)
Mutual labels:  zip, archive
Android Classyshark
Android and Java bytecode viewer
Stars: ✭ 6,930 (+5627.27%)
Mutual labels:  apk, jar
Jsondiffpatch
Diff & patch JavaScript objects
Stars: ✭ 3,951 (+3165.29%)
Mutual labels:  patch, diff
Gojsondiff
Go JSON Diff
Stars: ✭ 371 (+206.61%)
Mutual labels:  patch, diff
Python Patch
Library to parse and apply unified diffs
Stars: ✭ 65 (-46.28%)
Mutual labels:  patch, diff
Unityandroidhotupdate
(Unity3D热更新) provide a way to hot update Unity app on Android, support code&resources, not need lua js or IL runtime etc..., will not disturb your project development; just loading the new version apk file to achieve.
Stars: ✭ 85 (-29.75%)
Mutual labels:  update, patch

ApkDiffPatch

release license PRs Welcome +issue Welcome

Build Status Build status

a C++ library and command-line tools for Zip(Jar,Apk) file Diff & Patch; create minimal delta/differential; support Jar sign(Apk v1 sign) & Apk v2 sign & Apk v3 sign .
You can use this library (and Android NDK) to delta update your Apk.
( not support zip64, and only support decode Deflated code; dependent libraries HDiffPatch, zlib, lzma. )
[中文说明]


Releases/Binaries

Download from last release : Command line app for Windows , Linux , MacOS; and .so .java for Android.

usage:

  • ZipDiff(oldZip,newZip,out diffData)
    release the diffData for update oldZip;

  • ZipPatch(oldZip,diffData,out newZip)
    ok , got the newZip;
    ZipPatch() requires 4*(decompress stream memory) + ref old decompress memory + O(1), also ref old decompress can use temp disk file without memory;
    ZipPatch() support multi-thread parallel compress mode when writing zip file, which requires more and more memory!

  • NOTE:
    if your need newZip(patch result) file byte by byte equal, Released newZip := ApkNormalized(newZip) before run ZipDiff, AND You should not modify the zlib version (unless it is certified compatible);
    if your apk(or jar) file used Jar sign(Apk v1 sign), is same as zip file;
    if your apk used Apk v2 sign(or Apk v3 sign), Released newZip := AndroidSDK#apksigner(ApkNormalized(AndroidSDK#apksigner(newZip))) before ZipDiff;


Why ApkDiffPatch

Why need ApkDiffPatch or Google Play's archive-patcher after having BsDiff or HDiffPatch?

ApkDiffPatch   : v1.0
archive-patcher: v1.0  ( test by https://github.com/googlesamples/apk-patch-size-estimator )
BsDiff         : v4.3
HDiffPatch     : v2.2.6
=========================================================================================================
                                                          BsDiff HDiffPatch archive-patcher ApkDiffPatch
          oldVersion              newVersion      newSize  (bzip2)  (+zlib)    (+gzip)   (+zlib)  (+lzma)
---------------------------------------------------------------------------------------------------------
chrome-63-0-3239-111.apk chrome-64-0-3282-123.apk 43879588 32916357 32621974  18776996  15995242 13896562
chrome-64-0-3282-123.apk chrome-64-0-3282-137.apk 43879588 28895294 28538751   1357320   1341073  1149331
chrome-64-0-3282-137.apk chrome-65-0-3325-109.apk 43592997 31771385 31540550  16427116  14415021 12356765
google-maps-9-70-0.apk   google-maps-9-71-0.apk   50568872 37992141 37531799  17293163  14562607 11430622
google-maps-9-71-0.apk   google-maps-9-72-0.apk   54342938 41897706 41475595  21301751  18752320 14066134
weixin660android1200.apk weixin661android1220.apk 61301316 17565557 17372003   1927833   1794219  1659286
weixin661android1220.apk weixin662android1240.apk 63595334 38349926 38025483  22100454  18392769 15556315
weixin662android1240.apk weixin663android1260.apk 63595326 11614415 11531258   1044656    937920   940060
weixin663android1260.apk weixin665android1280.apk 63669882 21423459 21176790   9621032   9003472  7392063
---------------------------------------------------------------------------------------------------------
Average Compression                                100.0%    56.3%    55.8%     23.5%     20.4%    16.8%
=========================================================================================================

Contact

[email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].