美文网首页
kotlin实现简单的增量更新apk

kotlin实现简单的增量更新apk

作者: JaosnZhao | 来源:发表于2019-08-07 23:14 被阅读0次

一 : 首先创建好kotlin工程


引入anko

开源地址:(https://github.com/Kotlin/anko)按照文档提示集成。

settled in your gradle file at the project level:ext.anko_version='0.10.8'

implementation "org.jetbrains.anko:anko:$anko_version"

二 : 采用谷歌的SmartAppUpdates 


开源地址::(https://github.com/jiyouliang2/SmartUpdateDemo)仔细按照文档集成即可

1. 在project的build.gradle添加如下代码

allprojects {

    repositories {

        maven { url "https://jitpack.io" }

    }

}

2. 在Module的build.gradle添加依赖

implementation 'com.github.jiyouliang2:SmartUpdateDemo:1.0.1'

3.添加权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

4.代码中使用

PatchUtil.patch(旧版本, 新版本, 差分包);

三 :生成patch包


下载生成patch包的工具  链接 : (https://download.csdn.net/download/qq_18983205/10244386)解压并进去目录如图

然后进入cmd执行命令如下图所示:(C:\Users\Administrator\Desktop\tools\bsdiff-4.3、bsdiff4.3-win32、bzip2-1.0.6\bsdiff4.3-win32-src\Release>bsdiff.exe jason_208.apk jason_226.apk jason.patch)

如图所示:

jason_208.apk (旧版本)

jason_226.apk(新版本)

jason.patch(执行命令以后的增量包)

运行最后的demo ,把增量包放到(adb push yuedao.patch sdcard/)sdcard下,模拟下载好的增量包,

jason_new.apk(合并以后生成的最新包,合并成的新包和最新版本的包大小一致)

四:具体代码实例


class MainActivity : AppCompatActivity() {

        private val mDialog:ProgressDialogby lazy {

            ProgressDialog(this)

       }

       override fun onCreate(savedInstanceState: Bundle?) {

                      super.onCreate(savedInstanceState)

                       setContentView(R.layout.activity_main)

                        btn_show.onClick {

                            update() //adb shell dumpsys window w /findstr \/ |findstr name(cmd 命令行查看包名字)

                       }

    }

     fun update(){//com.ss.android.article.news

           var pm:PackageManager =packageManager

            //应用程序的信息

            val applicationInfo = pm.getApplicationInfo("包名", 0)

            //旧版本的路径

            val sourceDir = applicationInfo.sourceDir

           / /path文件的保存

            val file = File(Environment.getExternalStorageDirectory(), "jason.patch")

           //生成新版本

          val newfile = File(Environment.getExternalStorageDirectory(), "jason_new.apk")

        //合并:jni 来操作 so库

        //子线程

        mDialog.show()

        doAsync {

                      //PatchUtil.patch(旧版本, 新版本, 差分包);

                       val result = PatchUtil.patch(sourceDir,newfile.absolutePath,file.absolutePath)

                     if (result ==0){

                         runOnUiThread{

                             mDialog.dismiss()

                              //安装  意图

                               val intent = Intent()

                            intent.action ="android.intent.action.VIEW"

                             intent.addCategory("android.intent.category.DEFAULT")

                              intent.setDataAndType(Uri.parse("file://" + newfile.absoluteFile),

                              "application/vnd.android.package-archive")

                             startActivity(intent)

                         }

                   }

         }

        //生成patch包(查看步骤三)

    }


革命尚未成功,通知仍需努力谢谢

相关文章

  • kotlin实现简单的增量更新apk

    一 : 首先创建好kotlin工程 引入anko 开源地址:(https://github.com/Kotlin/...

  • 一、NDK:增量更新

    增量更新在Android开发中是一种很常见的技术。 增量更新的原理 增量更新的原理非常简单,就是将本地apk与服务...

  • Android NDK开发之旅18--NDK--Apk增量更新

    前言 有关APK更新的技术比较多,例如:增量更新,插件式开发,热修复,RN静默安装。下面简单介绍一下: 增量更新:...

  • Android 增量更新

    首先增量更新应该了解个概念:增量更新:在版本较近的apk升级的时候,根据两个apk之间的差异(生成差异包),合成新...

  • Android增量更新(bsdiff使用)

    简单了解 增量更新是什么?APP版本更新时不需要客户端下载新的apk,只需要下载差分包(两个apk的差异)。 差分...

  • NDK开发:增量更新原理

    现在国内主流的应用市场也都支持应用的增量更新了。 增量更新的原理,就是将手机上已安装apk与服务器端最新apk进行...

  • 增量更新简介

    增量更新的基本原理 增量更新主要是基于开源库bsdiff中的差分算法对两个不同版本的apk文件(旧版本的apk文件...

  • React Native 飞行日记——增量更新

    一、前言: ​ 本文介绍一种用于React Native增量升级的方案,类似与Apk增量更新方案。在React...

  • Android NDK开发之旅17--NDK--Apk增量更新

    Android NDK开发之旅 目录 前言 有关APK更新的技术比较多,例如:增量更新、插件式开发、热修复、RN、...

  • android增量更新简单实现(自用)

    1.增量更新:通过差分工具生成两个不同版本的包的差分包,当需要时可以通过老包和差分包生成新的包 全量更新:直接...

网友评论

      本文标题:kotlin实现简单的增量更新apk

      本文链接:https://www.haomeiwen.com/subject/avjzdctx.html