EasyClick 热更新坑点处理方案

EasyClick 热更新坑点处理方案

坑点1 IOS脱机版必须使用整数

服务端报错信息 版本号不对,实际上update.json内容如下

json 复制代码
{
  "update_url": "xxxxxxxxx",
  "version": "1.0.0"
}

设备日志,请求的版本是100 不是三段式

服务端的错误日志

复制代码
2026/3/18 22:36:12 [ERROR] 版本检查失败: 无效的版本格式
2026/3/18 22:36:12 [REQUEST] 400 - 3ms IP: 156.243.230.253 GET /api/check/update 状态码: 400 错误 耗时: 3ms
  • 正确做法
  • version改为整数,服务端做兼容整数和三段式
json 复制代码
{
  "update_url": "xxxxxxxxx",
  "version": "1"
}

坑点2 安卓端代码热更新

官方文档示例

js 复制代码
    // 从项目文件的update.json中获取版本号
    let version = JSON.parse(readIECFileAsString("update.json")).version
    // 手动定义版本
    // let version = 7;
    toast("Hello World - " + version);
    //请求服务器是否有新版本
    // 使用update.json模式
    //let updateResult = hotupdater.updateReq("",version,true,9000);

    // 使用自定义的模式 url
    let updateResult = hotupdater.updateReq("http://xxxxx/api/check/update?project=xxxx", version, true, 9000);
    logd("请求更新是否有: " + updateResult);
    if (!updateResult) {
        logw("请求失败错误信息: " + hotupdater.getErrorMsg());
    } else {
        logd("请求数据: " + hotupdater.getUpdateResp());
        //有更新得情况下进行下载新的版本
        let path = hotupdater.updateDownload();
        logd("下载路径为: " + path);
        if (!path) {
            logw("下载IEC文件错误信息: " + hotupdater.getErrorMsg());
        } else {
            restartScript(path, true, 3)
            //return;
        }
    }

执行完之后报错执行错误:无法将 1.0.0 转换为 java.lang.Integer(js/basic.js#50)

error 复制代码
[2026-03-19 06:25:42.299]【远程设备】准备运行工程...
[2026-03-19 06:25:42.303]【远程设备】开始启动...
[2026-03-19 06:25:42.336]【远程设备】开始执行,请稍等
[2026-03-19 06:25:42.347]【远程设备】执行 main class: com.js.main
[2026-03-19 06:25:42.350]【远程设备】执行class: com.js.main
[2026-03-19 06:25:42.352]【远程设备】Toast消息: Hello World - 1.0.0
[2026-03-19 06:25:42.354][开发工具版本11.37.0] 
[2026-03-19 06:25:42.354]【远程设备】[ APK版本:11.37.0 品牌:vivo 机型:V2048A 安卓版本:13 sdk: 33]
执行错误:无法将 1.0.0 转换为 java.lang.Integer(js/basic.js#50)
[2026-03-19 06:25:42.357][开发工具版本11.37.0] 
[2026-03-19 06:25:42.357]【远程设备】[ APK版本:11.37.0 品牌:vivo 机型:V2048A 安卓版本:13 sdk: 33]
(js/main.js#21 )org.mozilla.javascript.EvaluatorException: 无法将 1.0.0 转换为 java.lang.Integer
	at org.mozilla.javascript.DefaultErrorReporter.runtimeError(Unknown Source:22)
	at org.mozilla.javascript.Context.reportRuntimeError(Unknown Source:15)
	at org.mozilla.javascript.Context.reportRuntimeError(Unknown Source:13)
	at org.mozilla.javascript.Context.reportRuntimeErrorById(Unknown Source:4)
	at org.mozilla.javascript.NativeJavaObject.reportConversionError(Unknown Source:19)
	at org.mozilla.javascript.NativeJavaObject.toInteger(Unknown Source:20)
	at org.mozilla.javascript.NativeJavaObject.coerceToNumber(Unknown Source:197)
	at org.mozilla.javascript.NativeJavaObject.coerceTypeImpl(Unknown Source:282)
	at org.mozilla.javascript.Context.jsToJava(Unknown Source:0)
	at org.mozilla.javascript.NativeJavaMethod.call(Unknown Source:136)
	at org.mozilla.javascript.optimizer.OptRuntime.callN(Unknown Source:0)
	at com.js.basic._c_anonymous_15(Unknown Source:50)
	at com.js.basic.call(Unknown Source:1130)
	at org.mozilla.javascript.optimizer.OptRuntime.callN(Unknown Source:0)
	at com.js.main._c_main_1(Unknown Source:14)
	at com.js.main.call(Unknown Source:27)
	at org.mozilla.javascript.optimizer.OptRuntime.callName0(Unknown Source:10)
	at com.js.main._c_script_0(Unknown Source:101)
	at com.js.main.call(Unknown Source:22)
	at org.mozilla.javascript.ContextFactory.doTopCall(Unknown Source:0)
	at org.mozilla.javascript.ScriptRuntime.doTopCall(Unknown Source:33)
	at com.js.main.call(Unknown Source:12)
	at com.js.main.exec(Unknown Source:1)
	at 〇0〇oO00〇8.ooo8o088〇.〇Oo0oo80.Oo8oO88.丨丨lll(Unknown Source:44)
	at 〇0〇oO00〇8.ooo8o088〇.〇Oo0oo80.Oo8oO88.丨丨lll(Unknown Source:199)
	at 〇0〇oO00〇8.ooo8o088〇.〇Oo0oo80.Oo8oO88.LLI1lI1(Unknown Source:65)
	at 〇0〇oO00〇8.ooo8o088〇.〇Oo0oo80.Oo8oO88.run(Unknown Source:139)
  • 解决方案:代码热更新的时候version一定要填整数而不能是其他格式!
json 复制代码
{
  "update_url": "xxxxxxxxx",
  "version": "1"
}
  • 或者 代码请求的时候version手动填写数字!

吐槽EasyClick官方

对于EC官方,任性更新没办法!

只能遇坑填坑!!!

最后建议

  • 正确的使用update.json热更新配置文件的version字段,最好使用整数格式以适配官方的任性行为
  • 如果你是云存储方式热更新注意同步版本号为整数
  • 早期的开源EasyClick热更新系统,项目管理系统同步已更新,兼容了整数版本号可放心使用!
    地址:EasyClick热更新开源系统rust版
    EasyClick 项目管理
相关推荐
ZhuoAIStage13 小时前
舞台工艺多专业审图提速:用 AI 智能体编排 A+B+C+G 四段读图流水线
人工智能·自动化·工作流编排·舞台工艺·审图智能体
海绵宝宝的月光宝盒15 小时前
14-AutoCAD-阵列命令应用与案例实战(AR)
经验分享·笔记·自动化·课程设计·制造·学习方法·cad
螺丝钉tina18 小时前
[Playwright][08] Upload 模块自动化:如何设计真实业务测试用例?
运维·自动化·测试用例
实验室管理云平台21 小时前
面向高职院校实训场景:实训实验室管理平台整体方案分享
大数据·科技·物联网·自动化
是jin奥21 小时前
Claude Code + GitHub 自动化工作流整理
运维·自动化·github
PiaoKe___1 天前
云手机技术解析:从 ARM 虚拟化到 Python 自动化实战
python·智能手机·自动化
yz_aiks1 天前
chrome-use 使用教程:让 Claude Code 操控已登录的 Chrome(禅道、ONES 实测)
chrome·自动化·大模型·ai agent
虎鲸不是鱼1 天前
AI 自动化逆向(三十五)假设空间枚举的完备性是假设出来的
人工智能·自动化·大模型·逆向·ai逆向
中屹指纹浏览器svip1 天前
指纹浏览器RPA自动化靠谱吗?先分清适用边界
运维·自动化·rpa
智能制造爱好者1 天前
传统绕线机适配不了分块定子?有哪些自动化解法
自动化·电机