• Stars
    star
    238
  • Rank 168,700 (Top 4 %)
  • Language
    C
  • License
    MIT License
  • Created almost 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Android差分补丁库,通过native层合并APK,实现增量更新升级,让你更新的APK更小。

EasyIncrementalUpdate

English

Android差分补丁库,通过native层合并APK,实现增量更新升级,让你更新的APK更小。

如何使用

  • 引入jcenter库
implementation 'ren.yale.android:incremetalupdate:1.1.2'
  • 代码
boolean ret = EasyIncrementalUpdate.patch(context,"new apk path","patch file")

或者

String oldApk = EasyIncrementalUpdate.getApkSourceDir(context);
boolean ret = EasyIncrementalUpdate.patch(oldApk,"new apk path","patch file")

可以根据ret的值判断是否成功,如果失败的话,可以全量更新,失败的原因可以看logcat TAG=EasyIncrementalUpdate的日志

  • ndk abi 选择

在app/build.gradle中,请根据自己的需求选择

    defaultConfig {
        ...
        ndk {
            abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a','mips'
        }
    }

原理

服务器端通过开源差分工具bsdiff实现差分生成patch文件,客户端下载patch文件, 和本地原apk合并生产新的apk

服务器端差分工具使用

windows

差分命令

bsdiff.exe old.apk new.apk patch

合并命令(可以用来测试)

bspatch.exe old.apk new.apk patch

linux_x86-64

  • 下载server/linux_x86-64/bsdiff,下载server/linux_x86-64/bspatch

差分命令

bsdiff old.apk new.apk patch

合并命令(可以用来测试)

bspatch old.apk new.apk patch

提问

可以在这里提问

贡献代码

如何贡献代码

开源协议

MIT License

Copyright (c) 2017 Yale

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

More Repositories

1

CacheWebView

Custom implement Android WebView cache, offline website, let cahe config more simple and flexible
Java
1,910
star
2

RetrofitCache

RetrofitCache让retrofit2+okhttp3+rxjava配置缓存如此简单。通过注解配置,可以针对每一个接口灵活配置缓存策略;同时让每一个接口方便支持数据模拟,可以代码减小侵入性,模拟数据可以从内存,Assets,url轻松获取。
Java
673
star
3

Summer

Vertx router with JAX-RS
Java
64
star
4

quickapp-wechat

快应用实现的微信Demo
JavaScript
47
star
5

EasyJSBridge

让JS在Android/iOS WebView中反调接口统一,调用更容易
JavaScript
42
star
6

gorpool

Simple Goroutine pool
Go
35
star
7

stream

Golang stream lib is like Java 8 stream. Only handle slice or array.
Go
9
star
8

deploy

通过SSH连接,简单的配置文件,可以配置私钥,可以配置socks5,让部署更简单
Go
7
star
9

JavaAutoDeployClient

java auto deploy
Java
6
star
10

weixin-service

Golang微信,小程序后台接口
Go
5
star
11

gosocket

Simple Golang server socket long connection skeleton
Go
5
star
12

gank-uni-app

gank-uni-app 通过uni-app框架,调用gank.io接口写的干货集中营Demo,通过HBuilderX将项目打包为APP,包括iOS、Android、H5、微信小程序,支付宝小程序,百度小程序、头条小程序
CSS
5
star
13

VideoUtil

给视频添加关键帧工具
Go
4
star
14

doris-stream-loader

Apache Doris Stream Loader Golang API
Go
4
star
15

url-to-pdf-api-docker

url-to-pdf-api docker build
HTML
3
star
16

gffmpeg

golang ffmpeg wrapper
Go
3
star
17

ScrollViewSlipping

android ScrollViewSlipping
Java
3
star
18

nw-windows-easy-package

node-webkit windows easy package
HTML
2
star
19

PopList

Android poplist
Java
2
star
20

caddy-build

caddy build with some plugins
2
star
21

Roadmap

Go
1
star
22

Words

Words is for sentence util kit.
Java
1
star
23

go-commons

go-commons
Go
1
star
24

timer-message

Simple windows timer to show message box.
Go
1
star
25

vue-installer

vue component installer from github
JavaScript
1
star
26

xlsx2db

load xlsx file to db
Go
1
star
27

goutils

Go
1
star
28

ImageDeskew

ImageDeskew
Python
1
star
29

Axis1WebServiceClient

Axis1 WebService 客户端 例子,通过wsdl文件生成客户端代码并调用
Java
1
star
30

Axis1WebService

Axis1 WebService 例子,通过wsdl文件生成服务器端代码并部署
Java
1
star
31

deployx

Node deploy cli utils
JavaScript
1
star
32

wkvideoplayer

Java
1
star
33

ratelimiter

ratelimiter is wrapper token-bucket and count-limit by golang
Go
1
star
34

DataUpdater

Golang remote data update with timer lib. You can update config auto.
Go
1
star
35

vue-admin-frame

Simple vue admin frame demo, use vue2.0, element-ui
Vue
1
star