weex更新js文件和安卓apk

android部分代码

IOS请自行绕道

最近老板一直催我写一个东西,就是类似热更新的东西。要求看起来很简单,weex打包成js文件,js文件生成一个全量的zip,还有一个增量的zip,然后对应一个版本号。并且顺便把apk更新也做了,而且跟我说没有后台配合,要求我直接用文件的形式来写json。

PS:为什么写这个东西,因为我没干劲,没思路,不想写,写个文章可以逼着我写思路,写东西

思路

  1. 自己搭建tomcat,在一个文件里面写json充当接口使用,本来就是死数据不会变化的。
  2. 用okhttp下载文件
  3. 解压zip文件
  4. 对比版本号挨个下载解压

Server

服务器部分用tomcat随便搞一下

首先你要有个tomcat,自己去下个idea,怎么配置idea web项目怎么运行tomcat自行百度,我也不会vert.x暂时先这样tomcat比较简单。

项目结构

这里写图片描述
version文件中的内容

{
    "android_url": "/app.apk",
    "android_vs": 1,
    "js_full_zip": "/full.zip",
    "js_vs": 5,
    "patch": [
        {
            "js_vs": 5,
            "url": "/patch_5.zip"
        },
        {
            "js_vs": 4,
            "url": "/patch_4.zip"
        },
        {
            "js_vs": 3,
            "url": "/patch_3.zip"
        },
        {
            "js_vs": 2,
            "url": "/patch_2.zip"
        },
        {
            "js_vs": 1,
            "url": "/patch_1.zip"
        }
    ]
}

android 原生部分,网络请求

interface IHttpResponse {
    fun onFailed(s: String?, type: String)

    fun onResult(s: String?, type: String)

    fun onSocketFailed()

    fun onFailedConnect()
    fun onFailed()
}

class OkReq(private val response: IHttpResponse) {

    val gson = Gson()

    fun getSimple(url: String, type: String) {
        val request = Request.Builder()
                .url(url)
                .get()
                .build()
        val newCall = OkClients.okHttpClient.newCall(request)
        simpleCallback(newCall, type)
    }

    private fun simpleCallback(newCall: Call, type: String) {
        launch(CommonPool) {
            try {
                val response = newCall.execute()
                val string = response.body()?.string()
                string?.let { launch(UI) { this@OkReq.response.onResult(it, type) } }
            } catch (e: Exception) {
                e.printStackTrace()
                launch(UI) {
                    this@OkReq.response.onFailed(e.message, type)
                }
            }
        }
    }
}

然后我们去获取json,http://localhost:8080/version
这里写图片描述
现在我们要处理的问题
1.是获取安卓的版本然后强制更新,因为后台喜欢随意改接口
2.获取sp中的js版本
3.根据版本号去判断这个是不是需要下载,如果超过两个包那么就直接重新下个全量的包。如果小于2那么就一个个的更新。
话不多说我先写写
正在更新中
to be continue

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值