精华内容
下载资源
问答
  • uniapp--热更新代码
    千次阅读
    2020-04-09 15:31:49
    1. 第一步通过ajax请求后端的wgt文件,这个文件是可以通过HBUILDX生成的更新包
    2. 第二步官网有给了一个前端的更新代码,不过会出现一个错误 unexpected EOF,所以我们用另一个写法
      plus.runtime.getProperty(plus.runtime.appid, function(info) {
      					// ajax请求,这里就不写了,这里模拟一个数据,通过Promis方式,或者回调,这里看你们项目的需求,请求回来数据就可以了
      					let res = {
      						msg : '请求成功',
      						err : false,
      						data : {
      							upload : true,
      							wgtUrl : '服务器存放的地址'
      						},
      						code : 200
      					}
      					// 这里是请求成功后的回调处理
      					const {
      						data,
      						msg,
      						code
      					} = res;
      					if (code == 200) {
      						const {
      							wgtUrl,
      							update
      						} = data;
      						if (update && wgtUrl) {
      							/* 添加下载任务 */
      							var dtask = plus.downloader.createDownload(
      								wgtUrl, {
      									filename: '_doc/update/' + info.name + '/' + new Date().getTime() + '/'
      								},
      								(res, code) => {
      									plus.runtime.install(
      										res.filename, {
      											force: false
      										},
      										(res) => {
      											uni.hideLoading();
      											plus.runtime.restart();
      										},
      										(e) => {
      											uni.hideLoading();
      										}
      									);
      								}
      							);
      							try {
      								/* 监听下载进度 */
      								dtask.start(); // 开启下载的任务
      								var prg = 0;
      								var showLoading = plus.nativeUI.showWaiting("正在下载"); //创建一个showWaiting对象 
      								dtask.addEventListener('statechanged', function(
      									task,
      									status
      								) {
      									// 给下载任务设置一个监听 并根据状态  做操作
      									switch (task.state) {
      										case 1:
      											showLoading.setTitle("正在下载");
      											break;
      										case 2:
      											showLoading.setTitle("已连接到服务器");
      											break;
      										case 3:
      											prg = parseInt(
      												(parseFloat(task.downloadedSize) /
      													parseFloat(task.totalSize)) *
      												100
      											);
      											showLoading.setTitle("  正在下载" + prg + "%  ");
      											break;
      										case 4:
      											plus.nativeUI.closeWaiting();
      											//下载完成
      											break;
      									}
      								});
      							} catch (err) {
      								plus.nativeUI.closeWaiting();
      								uni.showToast({
      									title: '更新失败',
      									mask: false,
      									duration: 1500
      								});
      							}
      						}
      					}
      					
      				});

       

    uniapp的更新回调写法 

    const dtask = uni.downloadFile({
    									url: wgtUrl,
    									success: (downloadResult) => {
    										console.log(downloadResult);
    										if (downloadResult.statusCode === 200) {
    											plus.runtime.install(downloadResult.tempFilePath, {
    												force: false
    											}, function(res) {
    												plus.runtime.restart();
    											}, function(e) {
    												uni.showToast({
    													title: '更新失败',
    													mask: false,
    													duration: 1500,
    													icon: 'none'
    												});
    												uni.switchTab({
    													url: '/pages/index/index'
    												});
    											});
    										}
    									}
    								});
    								try {
    									var prg = 0;
    									var showLoading = plus.nativeUI.showWaiting("正在下载"); //创建一个showWaiting对象 
    									dtask.onProgressUpdate((res) => {
    										prg = res.progress;
    										showLoading.setTitle("  正在下载" + prg + "%  ");
    										
    										if (prg >= 100) {
    											plus.nativeUI.closeWaiting();
    										}
    									});
    								} catch (err) {
    									plus.nativeUI.closeWaiting();
    									uni.showToast({
    										title: '更新失败',
    										mask: false,
    										duration: 1500
    									});
    								}

    具体的代码见上图,给用户添加一个下载的提示,为了用户体验,这里我们再给用户添加上一个进度条,增加产品体验,让用户知道下载的进度,而不是误以为死机

    更多相关内容
  • 热更新代码

    2018-05-09 10:42:56
    dn_fix_ricky_as.zip 热更新关键代码
  • 要高效的开发 Java 代码,必须要让 Java 像 JavaScript 一样,修改过的代码可以实时的反应出来。该项目 — Hotswap Agent 允许开发者随时修改代码、资源而无需重启服务,支持动态修改类结构。可以看做是 JRebel ...
  • python热更新代码、热加载、运行时更改代码 用reload函数实现,注意在python3中reload在再是被基础库包含,而是归纳到了imp库中 代码在下面,复制即可用 #代码 from imp import reload import imp import time ...

    python热更新代码、热加载、运行时更改代码

    用reload函数实现,注意在python3中reload在再是被基础库包含,而是归纳到了imp库中

    代码在下面,复制即可用

    #代码
    from imp import reload
    import imp
    import time
    import 热更新
    
    
    def main():
        print("开始等待")
        time.sleep(30)
        p()
    
    
    def p():
        print("更新前")  # 改变这里以尝试
    
    
    if __name__ == "__main__":
        main()
    
    
    #控制台输入以下代码
    from imp import reload
    import imp
    import time
    import 热更新
    热更新.p()
    更新前
    reload(热更新)
    <module '热更新' from 'c:\\Users\\86159\\Desktop\\python\\热更新.py'>
    热更新.p()
    更新后
    
    

    感谢阅读~

    展开全文
  • unity 热更新代码

    2015-12-07 15:29:59
    自己开发的用于游戏中资源和脚本热更新代码
  • XLua热更新代码

    千次阅读 2018-04-04 17:15:26
    这篇简单的讲讲自己对XLua的一些理解,学习这一块的小伙伴肯定都知道用XLua的作用是什么,那就是对代码热更新。下面就以一个最简单的demo来模拟用lua代码替换C#代码的过程。(相比热更,基本上就是少了从服务器...

    这篇简单的讲讲自己对XLua的一些理解,学习这一块的小伙伴肯定都知道用XLua的作用是什么,那就是对代码的热更新。下面就以一个最简单的demo来模拟用lua代码替换C#代码的过程。(相比热更,基本上就是少了从服务器下载lua代码的ab资源与ab资源的读取)。文章内容也是自己学习xlua的初步理解,有大佬们发现不对的望指正。Demo在MyExamples/Hotfix文件夹下。


    首先我们新建一个脚本Hotfix.cs内容如下:

    using UnityEngine;
    
    namespace MyExamples {
    
        public class Hotfix : MonoBehaviour {
    
            void Start () {
                Show();
            }
    
            void Show() {
                Debug.Log("Show!!!");
            }
        }
    }
    脚本的内容很简单,就是运行的时候执行Show方法,打印一个log,然后这个应用就上线了。但是现在有一个需求,我们需要修改Show方法里面的log,但是我们又不想重新提交这个应用(毕竟出包审核可是很麻烦的,用户也不愿意老是更新应用)。这个时候就轮到Lua的登场了。当然了,下面这些处理操作都是需要在应用上线前添加好的。


    相关官方文档:

    热补丁:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/hotfix.md

    XLua教程:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/XLua%E6%95%99%E7%A8%8B.md


    思路:利用xlua,我们可以访问执行lua代码。同时,xlua提供的lua的api  xlua.hotfix()可以修改C#里面指定的方法内容,也就是上面例子的Show方法。那么我们只需要在程序运行的时候访问lua代码,遍历看看有没有需要替换的C#方法即可。我们可以将每一个需要的更新补丁版本,写在同一个lua文件中。然后用一个数组存放这些文件名。程序启动的时候读取这个数组,若包含补丁文件,就执行对应的补丁lua脚本。(对于热更新而言,存放数组的lua文件和补丁文件都可以打成一个ab包放到服务器上,程序运行的时候下载读取这个ab的内容即可)


    根据官方的建议,我们的lua代码都应该写在一个个的lua文件中,然后通过一个main.lua去统一调用处理。C#程序中只需要DoString("require 'main'")即可。根据需求和思路,我们可以有如下三个lua文件,放在Resources文件夹下:

    main.lua:lua的入口,管理所有的lua的使用调用。

    patchList.lua:存放补丁文件列表。

    patch1.lua:补丁文件,也就是在这里面替换Show方法。

    代码如下:

    main.lua:

    --lua的主文件,在这里面加载其他的lua脚本
    print("main.lua   start");
    
    -- 打补丁
    local list = require("PatchList");
    for _,filename in ipairs(list) do
        require(filename);
    end

    patchList.lua:

    -- Lua 补丁的列表,只有加到此列表中的补丁才会加载。
    
    return {
        "Patch1",
    };

    patch1.lua:

    -- 补丁1
    
    print("exe-----------patch1");
    
    xlua.private_accessible(CS.MyExamples.Hotfix);  
    
    xlua.hotfix(CS.MyExamples.Hotfix, "Show", function(self)  
        print("lua---Show");
    end)

    lua代码很简单,这儿就不细说了。接下来我们就要在C#中添加执行lua脚本的代码。LuaEnv建议的是全局就一个实例,并在Update中调用GC方法,完全不需要时调用Dispose。我们可以写一个单例来进行管理,XLuaManager.cs:

    using XLua;
    
    namespace MyExamples {
    
    	public class XLuaManager {
    
            LuaEnv m_luaEnv;
            static XLuaManager m_instance;
    
            public static XLuaManager instance {
                get {
                    if(m_instance == null) {
                        m_instance = new XLuaManager();
                    }
                    return m_instance;
                }
            }
    
            XLuaManager() {
                if(m_luaEnv == null) {
                    m_luaEnv = new LuaEnv();
                }
            }
    
            public void Start() {
                m_luaEnv.DoString("require 'main'");
            }
        }
    }

    我们只需要在应用启动的时候执行里面的Start方法即可调起lua,demo里面就简单点,直接加在了Hotfix.cs的Start方法里面:

    using UnityEngine;
    
    namespace MyExamples {
    
        public class Hotfix : MonoBehaviour {
    
            void Start () {
                XLuaManager.instance.Start();
                Show();
            }
    
            void Show() {
                Debug.Log("Show!!!");
            }
        }
    }

    如果这个时候,执行Generate Code 和 Hotfix Inject In Editor后(如果没有Hotfix Inject In Editor选择,需要添加HOTFIX_ENABLE宏打开该特性,在Unity3D的File->Build Setting ->player settings...->Scripting Define Symbols下添加),运行程序,会发现有如下报错:


    LuaException: xlua.access, no field __Hotfix0_Show

    这个说明我们没有权限去修改,查看文档我们可以知道,我们还需要对要修改的代码添加[Hotfix]标签,这里我们按照官方推荐的白名单方式,在Editor文件夹下新建HotfixConfig.cs文件,对namespace进行白名单处理:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using XLua;
    
    namespace MyExamples {
    
    	public static class HotfixConfig {
    
            [Hotfix]
            public static List<Type> hotfixList {
                get {
                    string[] allowNamespaces = new string[] {
                        "MyExamples",
                    };
    
                    return (from type in Assembly.Load("Assembly-CSharp").GetTypes()
                            where allowNamespaces.Contains(type.Namespace)
                            select type).ToList();
                }
                
            }
    
        }
    }

    再执行Generate Code 和 Hotfix Inject In Editor后,运行程序。我们会发现,Show方法已经被修改了,美滋滋:



    备注:有的童鞋可能在执行Hotfix Inject In Editor的时候,unity报错please install the Tools。这个是因为我们没有把xlua里面的Tools文件夹放到我们自己工程里面Assets的同级目录下。



    补充:

    有些小伙伴可能有这样的需求,就是我想热更一个方法的时候,还需要调用原方法(类似继承调用父方法)。按照上面的xlua.hotfix我们需要将原方法全部用lua重写一遍,这样很麻烦。xlua为我们提供了一个api来解决:util.hotfix_ex()。使用方法和hotfix一样,记得要require "xlua.util"。用self:methodName(...)来调用原方法

    local util = require "xlua.util";
    util.hotfix_ex(CS.MyExamples.Hotfix, "Show", function(self)
        self:Show();--调用原方法
    
        print("lua---Show");
    end)

    展开全文
  • 热更新服务器已关闭,但代码还可以看看 使用说明请查看:使用说明.txt 备注:这个demo只是解决测试时反复打包的困扰, 不建议最终打包给用户时使用。 当然,如果你的用户不会抓包等操作, 那就可以继续使用。否则,...
  • node 热更新代码,无需每次重启命令

    千次阅读 2020-04-11 18:48:24
    在node中,每次改完代码都需要执行...安装supervisor实现热更新 执行npm install -g supervisor进行全局安装supervisor 然后在启动node时使用supervis代替node命令: 这次在代码中改完就可以直接去页面刷新了: ...

    在node中,每次改完代码都需要执行node命令,才能看效果。安装supervisor实现热更新

    执行npm install -g supervisor进行全局安装supervisor
    在这里插入图片描述

    然后在启动node时使用supervis代替node命令:
    在这里插入图片描述

    这次在代码中改完就可以直接去页面刷新了:
    在这里插入图片描述

    展开全文
  • 资源热更新以及代码热更新资源热更新流程lua代码热更新流程实现 注意,我使用的是2018版,如果是2019及以上的, lua的更新还需要多一步 可以看这个视频里的最后的部分 ...spm_id_from=pageDriver 资源热更新 ...
  • js代码-webpack热更新

    2021-07-15 02:11:41
    js代码-webpack热更新
  • 热更新部署代码jar包

    2018-11-03 12:23:04
    热更新示例可以便于服务器端进行热部署 !图表设计实际上就是数据可视化设计,美观的图表设计可以让数据分析变得轻松、流畅、并且易读,将更有助于提高用户的工作效率,降低用户的工作负担。RDP报表工具不仅具有经典...
  • IDEA设置代码热更新

    2021-08-25 16:54:52
    我们使用IDEA时希望自己修改的代码能立即生效,下面介绍下如何实现 不废话,直接上图: ps:1.此方法只适合debug模式,如果你启动使用的是正常启动,则该设置不会生效。 2.该方法需要idea失去焦点时生效,...
  • 本地debug的时候,可以实时编译并更新代码,线上也可以不停服来动态更新类,即所说的java部署。  JDK代理的两种方式:  1.premain方式是Java SE5开始提供的代理方式,但其必须在命令行指定代理jar,并且代理类...
  • IDEA热更新SpringBoot代码(亲测有效)

    千次阅读 2019-09-04 10:47:45
    现在网上那些什么热部署,热更新的帖子,绝大部分都是复制粘贴的,然后,笔者亲测,发现,按照网上的配置,效果是:代码发生更新,就会重新启动SpringBoot项目,注意:是重启,不是热更新代码,不像传统项目Tomcat...
  • 主要介绍了详解如何热更新线上的Java服务器代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 本文给大家讲解的是Node.js的代码热更新的问题,其主要实现原理是怎么对 module 对象做处理,也就是手工监听文件修改, 然后清楚模块缓存, 重新挂载模块,思路清晰考虑细致, 虽然有点冗余代码,但还是推荐给大家
  • 主要介绍了nodemon实现Typescript项目热更新的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • js代码-Node模块热更新

    2021-07-15 01:45:24
    js代码-Node模块热更新
  • Android热更新详解

    千次阅读 多人点赞 2021-09-21 14:45:57
    正好最近又看到热更新,对以前Android 热修复核心原理:ClassLoader类加载机制做了点补充。 从16年开始开始,热修复技术开始在安卓界流行,它以classloader类加载机制为核心,可以不发布新版本就修复线上 bug ,让...
  • 热修复,热更新,JS代码动态下发,动态创建类 TTPatch升级为2.0,核心实现替换为libffi实现。同时将代码替换,修改敏感命名。TTPatch更新为TTDFKit 风险提示:进行技术交流使用,上架有风险!!!! 热更新交流群:...
  • 记一次使用 Arthas 热更新线上代码

    千次阅读 2019-09-26 14:45:39
    引用参考第二条 - Arthas提醒您:诊断千万条,规范第一条,更不规范,同事两行泪起因在一次迭代中,出现了一个低级错误,if 语句中的判断逻辑出现了错误,刚好这个功...
  • 参考链接: https://blog.csdn.net/mouday/article/details/80814401 新建文件config1.py aaa=223 bbb=24 新建文件brush.py import time from importlib import reload ... 代码 不用动,改变变量生效。
  • unity之代码热更新

    千次阅读 2017-03-28 11:32:29
    1,代码热更新是解决什么问题的? 缩短用户取得新客户端的流程,改善用户体验。 没热更新: 下载app--》安装--》启动--》...1,基于c#,使用动态加载Assembly反射更新代码 优点:对现有框架无需大的修改,使用c#
  • 一、前期准备 1.需要有一个云服务器,windows环境,并发不是太高的话 最基本的1核就够了 腾讯云双11活动链接 1核2G88元/年 阿里云双11活动链接 1核2G 84/年 ...↓热更新的原理↓ 1.http.get获取云端js文...
  • 主要介绍了IDEA SpringBoot项目配置热更新的步骤,无需每次手动重启服务器,本文通过图文实例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • 已实现flutter模块中的代码和资源的热更新 已知问题: 1.只能下发flutter代码,不能下发Android代码(这也不算问题) 2.flutter引擎版本最好一致 3.点击热更新时必须保证fluttr engine没有初始化过,也就是app运行...
  • Jboot使用jrebel 热更新代码

    千次阅读 2018-07-06 17:05:01
    我这里是安装好了的 2、配置IDEA:idea中command+shift+a ,在弹出浮层中输入registry 在 compiler.automake.allow.when.app.running 选中,关闭窗口 4、之后再设置idea为自动编译。...修改下代码,就自动刷新了
  • IOS 热更新,实时代码更新,动态更新,动态库framework http://blog.csdn.net/jianrenbubai/article/details/50351507
  • Python编程:reload热更新代码

    千次阅读 2018-06-26 14:08:54
    本例子使用python3 新建两个文件: a.py print("a...") b.py import a import time from importlib import reload while True: time.sleep(5) reload(a) 现在,我们启动b.py文件...修改a.py文件,...
  • idea部署(更新代码不用重启tomcat).docx idea部署(更新代码不用重启tomcat).docx

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 113,704
精华内容 45,481
关键字:

热更新代码

友情链接: 幂法Mathematica实现.rar