精华内容
下载资源
问答
  • 增量升级

    2015-11-03 13:13:58
    http://www.ithtw.com/811.html
    http://www.ithtw.com/811.html
    展开全文
  • 增量升级源码

    2016-12-07 15:28:51
    增量升级源码,增量升级解决方案
  • 增量升级工具

    2013-05-09 13:47:58
    增量升级工具 个人备忘
  • 增量升级server端

    2016-09-14 15:02:11
    增量升级server端的模拟demo
  • 增量升级local端

    2016-09-14 15:03:35
    android增量升级local端模拟代码
  • android增量升级

    2015-08-16 14:48:52
    该资源包含了一个android apk增量升级的简单demo喜欢的下载。可以参考博客http://blog.csdn.net/mockingbirds/article/details/47701635,详细的实现步骤
  • android 增量升级DEMO

    2018-04-03 12:35:48
    随着APP的越来越大,增量升级已是必不可少的方法,根据新旧版本的APP,在PC上用diff工具生成差分包, 然后把差分包放到设备上或是从服务器下载到本地,并在本地使用差分包与已安装apk,合成新版apk。通过计算MD5值,...
  • 经常遇到在某些软件项目中,因为一些特殊原因需要向客户提供离线升级包,用于手动升级软件,当软件版本升级比较频繁时,制做适合各版本的最小离线升级包将变的非常麻烦,这时可试试这款“ZeroCore增量升级包生成器”...

           经常遇到在某些软件项目中,因为一些特殊原因需要向客户提供离线升级包,用于手动升级软件,当软件版本升级比较频繁时,制做适合各版本的最小离线升级包将变的非常麻烦,这时可试试这款“ZeroCore增量升级包生成器”工具。

           本软件可准确快速记录软件项目不同版本或不同时间的文件快照,并根据快照之间的差异生成绿色离线升级包,特点是操作简单,运行快速,生成的增量升级包小巧、准确、高效、绿色,分发后只需简单拷贝覆盖即可升级成功。       

           本软件支持多个升级项目的管理,非常高效。

           软件使用方法比较简单,所以就不啰嗦了,直接来一张示意图大家就基本明白了:

           本软件下载地址    https://download.csdn.net/download/liulin900/10892865

    展开全文
  • Android APP增量升级

    2014-01-10 11:32:33
    Android APP增量升级的实现方式文档 有兴趣的同学可以在下载下来看看,
  • JNI-增量升级Demo

    2016-05-07 11:34:46
    Android增量升级功能Demo,设计NDK开发知识,详情见我的博客http://blog.csdn.net/winter12071634/article/details/51249781
  • 增量升级测试APK

    2014-11-17 20:34:25
    Android软件增量升级APK案例演示
  • 主要介绍了Android增量升级的方法和原理,有需要的朋友可以参考一下
  • STM32单片机可用的差分升级(增量升级)算法软件(非源码,请联系微信deiois) 介绍博客:https://blog.csdn.net/zhou74281/article/details/117777684 DiffIAP – STM32单片机可用的差分升级(增量升级),适用于物联网车...
  • Android增量升级DEMO

    2013-06-14 21:34:18
    Android增量升级DEMO(本人比较久没接触JNI这块了,当初写的DEMO比较乱,现在也没时间去重新整理,所以提供一份朋友的DEMO,在这里也感谢这位朋友!)
  • Android系统手机软件增量升级.pdf
  • 通过深入分析SOC目标代码结构以及目标代码间的链接机制, 提出了一种软件增量升级的方法。首先, 开发者独立编译待升级模块并按照一定的格式修改其目标文件, 生成升级数据包。之后, SOC接收该数据包, 根据协议...
  • Android Studio 更新升级之增量升级

    千次阅读 2016-06-13 15:45:21
    世界是属于勇敢者的。...增量升级首先要获取到Android Studio当前的版本号:我的Android Studio版本号为:143.2730271接着我们要获取到需要更新的版本号,我浏览器中访问:https://dl.google.com/android/studio/p

    世界是属于勇敢者的。——哥伦布

    概述

    我们经常会按着如下方法进行Android Studio版本升级:

    as

    但是等待的结果却是让我们悲催的:

    as

    那么怎么才能升级呢?

    增量升级

    首先要获取到Android Studio当前的版本号:

    as

    我的Android Studio版本号为:143.2730271

    接着我们要获取到需要更新的版本号,我浏览器中访问:

    https://dl.google.com/android/studio/patches/updates.xml

    as

    为什么第一次需要间隔一个?如果升级的版本号为:143.2739321 ,下载增量的地址是不能访问的。

    所以当前升级的版本号为:143.2759333

    注意:如果你想从1.5.1.0直接升级到2.1.1.0是不可以的。

    接着就要下载增量包:

    https://dl.google.com/android/studio/patches/AI-143.2730271-143.2759333-patch-win.jar

    • 143.2730271 当前版本号
    • 143.2759333 升级版本号

    as

    有可能你的浏览器不能访问上面的地址,请不要担心,我会在后面附上已经下好的jar包:

    as

    注意:下载的增量包不能放到Android Studio安装目录下面。

    比如我的Android Studio目录为:

    F:\RWXAndroidStudio\androidStudio

    增量包我就直接放到了f盘下面:

    as

    如果你放到其他目录下,请不要有空格,也尽量不要使用中文。

    接着关闭Android Studio,不然会更新失败。

    然后打开cmdcdAndroid Studio安装目录:

    as

    接着输入:

    java -classpath F:/AI-130.745757-132.809981-patch-win.jar com.intellij.updater.Runner install .

    最后一个”.”表示安装到当前目录

    注意: F:/AI-130.745757-132.809981-patch-win.jar 是增量包目录

    切记: 如果你的目录不对,就会出现:

    as

    找不到或者无法加载主类的提示。

    下图表示Android Studio正在升级:

    as

    最后再打开Android Studio在 Help一一>About:

    as

    版本已经升级到:143.2759333

    本篇当中的注意事项比较多,操作也比较繁琐,希望大家能够仔细阅读。

    jar增量包下载地址

    展开全文
  • Android 探索增量升级

    2020-06-10 13:56:48
    Android 的增量升级,不同热修复和热更新,它只是通过和老的 apk 对比,识别出与新 apk 之间的二进制差异,从而生成的补丁包(差量包); 这样的好处在于,不用全部下载所有的文件,比如一个游戏 1个多G,如果每次更新...

    一、介绍

    Android 的增量升级,不同热修复和热更新,它只是通过和老的 apk 对比,识别出与新 apk 之间的二进制差异,从而生成的补丁包(差量包);
    这样的好处在于,不用全部下载所有的文件,比如一个游戏 1个多G,如果每次更新,都下载1个多G,相信这个游戏基本没人下,但是使用差量包,则需要几十或者几百兆,这样对用户来说,相对能接受些。
    通过这篇文章,你将看到:

    • 差量包的生成
    • cmake 实现 bsdiff 升级接口的过程
    • 生成 so 工其他工程使用

    工程连接:https://github.com/LillteZheng/ZDiffUpdate

    二、生成差量包

    首先,我们需要借助 bsdiff工具生成差量包。win 用户下载这个:
    在这里插入图片描述
    接着解压,文件如下:
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200610114125794.png在这里插入图片描述
    接着,把老的 apk 和 新的 apk 放到相同目录下,并使用 cmd 执行以下命令,生成 patch

    bsdiff_win_exe>bsdiff.exe  v1.0.apk v1.1.apk patch.patch
    

    然后再通过 patch 与 老版本的apk对比,生成 差量包:

    bspatch.exe v1.0.apk new.apk patch.patch
    

    最后的结果如下:
    在这里插入图片描述
    这样,v1.1.apk 与 new.apk 是相同的,这样,我们只需要把 new.apk 和 patch 上传到服务器,Android下载更新即可

    三、Android 增量更新(cmake)

    bsdiff 工具为 .c 的源代码,需要配合 bszip。(有些链接已经失效,通过我的github工程加载)
    导入源码:
    在这里插入图片描述
    然后打开 CMakeLists.txt 配置源码路径:

    # 配置路径,CMAKE_SOURCE_DIR 为CMakeLists.txt 的位置
    file(GLOB bzip_source ${CMAKE_SOURCE_DIR}/bzip/*.c)
    add_library( # Sets the name of the library.
            native-lib
    
            # Sets the library as a shared library.
            SHARED
    		#添加 bspatch 和 bzip 下的所有代码
            bspatch.c
            ${bzip_source}
    
            # Provides a relative path to your source file(s).
            native-lib.cpp)
    

    此时编译,会出现 bspatch.c 报错的问题,我们需要改变头文件的引入路径,注释掉默认的 <bzlib.h>,修改为:
    在这里插入图片描述
    然后,再修改它的 main()函数名为 execute_update,方便后面我们的调用:
    在这里插入图片描述

    3.1 添加 Java 层调用方法

    新建一个 UpdateJni.java 类,引用 jni 库,并添加方法:

    public class UpdateJni {
        static {
            System.loadLibrary("native-lib");
        }
    
        /**
         * 升级方法
         *
         * @param oldPath    老的apk 路径
         * @param patch      对比生成的 patch 的路径
         * @param newApkPath 新 apk 的路径
         */
        public static native void diffUpdate(String oldPath, String patch, String newApkPath);
    }
    
    

    然后,编写 native-lib.cpp ,添加 diffUpdate() 方法,如下:

    
    extern "C"{
    //引入bspatch.c里的main方法
    extern int execute_update(int argc,char * argv[]);
    }
    
    extern "C" JNIEXPORT void JNICALL
    Java_com_zhengsr_zdiffupdate_UpdateJni_diffUpdate(JNIEnv *env, jclass instance, jstring oldapk_,
                                                     jstring patch_, jstring output_) {
        const char *oldapk = env->GetStringUTFChars(oldapk_, 0);
        const char *patch = env->GetStringUTFChars(patch_, 0);
        const char *output = env->GetStringUTFChars(output_, 0);
    
    
        int argc = 4;
        char *argv[4] ={"", const_cast<char *>(oldapk),const_cast<char *>(output),const_cast<char *>(patch)};
        execute_update(argc,argv);
    
        env->ReleaseStringUTFChars(oldapk_, oldapk);
        env->ReleaseStringUTFChars(patch_, patch);
        env->ReleaseStringUTFChars(output_, output);
    }
    

    这样,我们的 C 层就编写完了。

    回到 activity,在点击事件中,更新差量包:

       public void test(View view) {
            /**
             * 使用请参考以下步骤
             * 1、请先安装 v1.0.apk 看看效果,然后不要点击它的button,adb 命令参考:adb install -r v1.0.apk
             * 2、接着把new.apk 和 patch.patch push 到 sdcard,adb 命令参考:adb  push patch.patch /sdcard/.
             * 3、运行软件,点击更新,即可看到 v1.0.apk 的背景被替换了
             */
            new UpdateTask().execute();
        }
    
        class UpdateTask extends AsyncTask<Void,Void,File> {
    
            @Override
            protected File doInBackground(Void... voids) {
                //自己的apk 可以用这个
               // String sourceDir = getApplicationInfo().sourceDir;
                String sourceDir = "/data/app/com.zhengsr.diffupdate-1/base.apk";
    
                String patch = Environment.getExternalStorageDirectory().getAbsolutePath()+"/patch.patch";
    
                String newApk = Environment.getExternalStorageDirectory().getAbsolutePath()+"/new.apk";
    
                File file1 = new File(patch);
                File file2 = new File(newApk);
    
               
                long time = System.currentTimeMillis();
     			//差分包建议在子线程中运行,防止阻塞主线程
                UpdateJni.diffUpdate(sourceDir,patch,newApk);
    
    
                return new File(newApk);
            }
    
            @Override
            protected void onPostExecute(File file) {
                super.onPostExecute(file);
                //2、安装
                Intent i = new Intent(Intent.ACTION_VIEW);
                if(Build.VERSION.SDK_INT<Build.VERSION_CODES.N){
                    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    i.setDataAndType(Uri.fromFile(file),
                            "application/vnd.android.package-archive");
                }else {
                    i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    String packageName = getApplication().getPackageName();
                    Uri contentUri = FileProvider.getUriForFile(MainActivity.this, packageName+ ".fileProvider", file);
                    i.setDataAndType(contentUri,"application/vnd.android.package-archive");
                }
                startActivity(i);
            }
        }
    

    由于解析差量包的过程是好事的,所以,我们放在 asynctask 中去更新。 效果如下:
    在这里插入图片描述

    四、生成 so 工其他工程使用

    既然功能已经完成了,下个工程还得重新搞一遍有点得不偿失,所以,从 debug 中,拿到已经有完整功能的 so:
    在这里插入图片描述
    新建一个cmake或ndk工程,把它放到 libs 中,并把 libnative-lib.so 命名成自己喜欢的,比如 libdiffUpdate.so:
    在这里插入图片描述
    然后再 build.gradle 中配置so库的位置:
    在这里插入图片描述
    接着,新建一个和 so 相同的包名,并把 UpdateJni 复制过去:
    在这里插入图片描述
    然后在 activity 中调用即可:

        class UpdateTask extends AsyncTask<Void,Void, File> {
    
            @Override
            protected File doInBackground(Void... voids) {
                //自己的apk 可以用这个
                // String sourceDir = getApplicationInfo().sourceDir;
                String sourceDir = "/data/app/com.zhengsr.diffupdate-1/base.apk";
    
                String patch = Environment.getExternalStorageDirectory().getAbsolutePath()+"/patch.patch";
    
                String newApk = Environment.getExternalStorageDirectory().getAbsolutePath()+"/new.apk";
    
                File file1 = new File(patch);
                File file2 = new File(newApk);
    
                //差分包建议在子线程中运行,防止阻塞主线程,这里是测试,所以没关系
                long time = System.currentTimeMillis();
    
                UpdateJni.diffUpdate(sourceDir,patch,newApk);
    
                return new File(newApk);
            }
    
            @Override
            protected void onPostExecute(File file) {
                super.onPostExecute(file);
                //2、安装
                Intent i = new Intent(Intent.ACTION_VIEW);
                if(Build.VERSION.SDK_INT<Build.VERSION_CODES.N){
                    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    i.setDataAndType(Uri.fromFile(file),
                            "application/vnd.android.package-archive");
                }else {
                    i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    String packageName = getApplication().getPackageName();
                    Uri contentUri = FileProvider.getUriForFile(MainActivity.this, packageName+ ".fileProvider", file);
                    i.setDataAndType(contentUri,"application/vnd.android.package-archive");
                }
                startActivity(i);
            }
        }
    

    参考:Android增量更新

    展开全文
  • bsdiff的发行版本,用于小容量单片机的增量升级,包含一个软件,用于生成补丁包,和使用C写的用于移植到单片机上解码的代码
  • 该篇文章从eoeAndroid搬迁过来的,原文地址:【第二节】android增量升级之使用so文件进行增量升级 前言在第一节中,我讲了如何生成增量升级的so文件,没看的童鞋点【第一节】android增量升级之生成so文件 ,在这一节...
  • Android APP增量升级的实现方式
  • 而google为了解决了这个问题,提出了Smart App Update,即增量更新(也叫做差分升级)。 尽管现在网络环境有了很大的提升,但一个不争的事实就是应用越做越大,因此,增量更新在目前的仍然是一种解决APP更新包过大的...
  • android 实现增量升级,内附说明,如何生成patch文件和ndk对应的.h头文件
  • 增量升级打包程序

    2013-01-24 16:15:50
    公司内的WEB程序每次升级只允许增量升级,不允许全量升级,每次必须挨个目录找文件,太麻烦了,特此做了个打包程序,相信各位也有用得到的,有需要源代码的下载后给我发邮件即可 1. 选择项目位置,该项目位置为已...
  • Android增量升级方案

    2016-10-07 20:03:49
    Android增量升级方案 2016-09-12 何以诚 郭霖 结束了愉快的周末,又到了给大家更新的时候。 本篇来自公众号“老司机” 何以诚 的投稿,分享了如何进行增量升级(亦作增量更新)。文中...
  • Android 增量升级原理以及实现测试 Android增量升级,一个比较好玩的内容,几年前做项目的时候做过预研,但是没有真正应用到项目中去。所以仅仅测试了一下,但是那时候感觉增量升级好像不怎么靠谱,就没有继续深入...
  • 而google为了解决了这个问题,提出了Smart App Update,即增量更新(也叫做差分升级)。 尽管现在网络环境有了很大的提升,但一个不争的事实就是应用越做越大,因此,增量更新在目前的仍然是一种解决APP更新包过大...
  • 用于安卓应用增量升级,可以做新旧版本应用的差异包,客户端做旧包和差异包合成新的安装包

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,814
精华内容 17,125
关键字:

增量升级