CN109683927A - 一种更新u3d安卓游戏的方法 - Google Patents
一种更新u3d安卓游戏的方法 Download PDFInfo
- Publication number
- CN109683927A CN109683927A CN201811294749.6A CN201811294749A CN109683927A CN 109683927 A CN109683927 A CN 109683927A CN 201811294749 A CN201811294749 A CN 201811294749A CN 109683927 A CN109683927 A CN 109683927A
- Authority
- CN
- China
- Prior art keywords
- game
- android
- metadata
- dat
- global
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种更新U3D安卓游戏的方法,包括步骤:基于unity工程设置发包环境;修改需要更新的逻辑代码,并发出更新安卓包;将所述更新安卓包文件下的libil2cpp.so、global‑metadata.dat放置远程服务器上;启动游戏,检测远程资源是否被改动,如果有更新,则下载libil2cpp.so、global‑metadata.dat;重启游戏,并加载libil2cpp.so、global‑metadata.dat。能够缩减包体大小,并且只需下载几个更新文件就能够更新游戏,减少用户下载新包的时间和流量、增加用户游戏体验、增加游戏流畅度。
Description
技术领域
本发明涉及U3D(Unity3D)安卓游戏开发技术领域,特别是涉及一种更新U3D安卓游戏的方法。
背景技术
目前U3D安卓游戏更新游戏逻辑代码主要有两种方案:第一方案是dll程序集加载技术:通过把代码编译成dll放置远程资源服,下载至手机客户端,加载此dll程序集,使用反射技术启动游戏实现游戏逻辑的更新。第一种方案具有以下弊端:(1)因为是C#编译的dll,很容易被其他人破解暴露里面编写的源代码;(2)动态加载的脚本不能在编辑器模式挂载在prefab(资源文件)上,这个问题导致前期规划游戏代码时分2部分,一部分工具类需要挂载prafab上使用的代码,一部分能编译至dll中的代码,且前部分代码不能直接访问后部分代码,得通过delegate代理等技术访问,编码相对繁琐。第二种方案是lua、ulua、nlua等lua+unity模式更新技术:游戏初始规划lua脚本实现游戏部分逻辑,其它大部分代码还是使用C#编码,通过Luainterface、luanet等lua管理器进行Lua和C#交互实现lua控制游戏逻辑,当有修改需求,直接修改对应的lua文件,lua被当做资源放置远程服务器让玩家下载更新对应的游戏逻辑。第二种方案具有以下弊端:(1)只适合用lua编写的部分逻辑功能更新,其它部分代码没发更新;(2)在lua中引用C#中的object相对缓慢,代价昂贵,在lua和C#中频繁传递unity独有的值类型(Vector3/Quaternion等)做位移旋转等更加昂贵,虽然可以通过lua中也建一个Vector3的table{x,y,z},但这样跟unity中的Vector3是两个东西了,传递中需要转换成对应的类型。
两种方案都无法实现完整性、阶段性改动大的更新,通常市面上游戏大的代码性改动得使用重新发安卓包,让用户重新下载安装新包的方式实现。
发明内容
为了解决现有技术存在的不足,本发明的目的在于提供一种更新U3D安卓游戏的方法,可以缩减包体大小,并且只需下载几个更新文件就能够更新游戏,减少用户下载新包的时间和流量、增加用户游戏体验、增加游戏流畅度。
为实现上述目的,本发明提供的更新U3D安卓游戏的方法,包括以下步骤:
基于unity工程设置发包环境;
修改需要更新的逻辑代码,并发出更新安卓包;
将所述更新安卓包文件下的libil2cpp.so、global-metadata.dat放置远程服务器上;
启动游戏,检测远程资源是否被改动,如果有更新,则下载libil2cpp.so、global-metadata.dat;
重启游戏,并加载libil2cpp.so、global-metadata.dat。
进一步地,所述基于unity工程设置发包环境的步骤,进一步包括:
将环境设为Android环境,将Scripting Backend设为IL2CPP,将Device Filter设为ARMv7;
编写与远程下载相关的代码;
修改LoadMetadataFile,并生成新的安装目录。
进一步地,通过C#编码进行所述修改需要更新的逻辑代码的步骤。
进一步地,所述将所述更新安卓包文件下的libil2cpp.so、global-metadata.dat放置远程服务器上的步骤,进一步包括:
使用WinRar解压工具解压更新安卓包。
进一步地,所述启动游戏,检测远程资源是否被改动,如果有更新,则下载libil2cpp.so、global-metadata.dat的步骤,进一步包括:
将libil2cpp.so、global-metadata.dat下载到所述新的安装目录。
进一步地,所述重启游戏,并加载libil2cpp.so、global-metadata.dat的步骤,进一步包括:
调用安卓重启接口,检测所述新的安装目录是否有libil2cpp.so文件变动;
截断***的原有的libil2cpp.so的启动;
加载所述新安装目录下的libil2cpp.so;
加载global-metadata.dat。
更进一步地,所述加载global-metadata.dat的步骤,进一步包括:
扫描所述新安装目录下是否存在global-metadata.dat;
如果存在,则加载新的global-metadata.dat,否则加载原有的global-metadata.dat。
本发明的更新U3D安卓游戏的方法,通过修改需要更新的逻辑代码并且使用IL2CPP编译发的安卓包,将其放置远程服务器上供终端下载,并加载libil2cpp.so、global-metadata.dat,比Mono发的包相比,代码编译速度提高不少,还可以缩减包体大小。另外,用户不重新下载安卓包,以实现游戏大版本、小版本游戏逻辑功能的更新,这样用户只需要下载几个更新文件就能继续体验游戏,减少用户下载新包的时间和流量、增加用户游戏体验、增加游戏流畅度。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1为根据本发明的更新U3D安卓游戏的方法流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
在本实施例中,以测试更新U3D安卓游戏的方法为例进行详细说明。
图1为根据本发明的更新U3D安卓游戏的方法流程图,下面将参考图1,对本发明的更新U3D安卓游戏的方法流程图进行详细描述。
首先,在步骤101,基于unity工程设置发包环境。在本实施例中,使用测试unity工程,将环境设为Android环境,将Scripting Backend设为IL2CPP、将Device Filter设为ARMv7,并编写与远程下载相关的代码,并且修改unity安装目录下MetadataLoader.cpp中的LoadMetadataFile,生成新的安装目录。
另外,在本实施例中,在步骤101之后,创建测试代码GUI.Label,并发安卓包。具体地,GUI.Label(new Rect(200, 200,100,50),“1”);使用WinRar解压工具将test1.apk解压到test1目录。代码中的“1”起到在游戏窗口中显示文字“1”。在本实施例中,使用C#编码。
在步骤102,修改测试代码GUI.Label,并发更新安卓包,也就是test2.apk。具体地,修改测试代码为GUI.Label(new Rect(200, 200,100,50),“2”); 使用WinRar解压工具将test2.apk解压到test2目录。代码中的“2”起到在游戏窗口中显示文字“2”。
另外,在步骤103后,为了测试加载所创建的测试代码,并退出关闭游戏。具体地,在手机上安装test1.apk,启动后可以看到游戏屏幕中显示“1”;并退出关闭游戏。
在步骤103,将test2.apk文件下的libil2cpp.so、global-metadata.dat放置远程服务器上。
在步骤104,检测远程资源是否被改动,如有改动下载libil2cpp.so、global-metadata.dat。具体地,将libil2cpp.so下载到游戏新的安装目录下files/iltocpp/libil2cpp.so,将global-metadata.dat下载到新的安装目录下files/iltocpp/Metadata/global-metadata.dat。
在步骤105,重启游戏,并加载libil2cpp.so、global-metadata.dat。在步骤107中,下载完成后,调用安卓重启接口,在与安卓模块协商在libmain.so启动后检测所述新的安装目录是否有libil2cpp.so文件变动;并部分截断libil2cpp.so的启动,使用新目录下(files/iltocpp文件夹下)libil2cpp.so文件;扫描新目录下是否存在global-metadata.dat;如果存在,则加载新的global-metadata.dat,如如果不存在则使用默认加载(il2cpp/Metadata/global-metadata.dat);加载完成后游戏界面显示文字“2”,更新完成。
根据本实施例,仅修改需要更新的逻辑代码并且使用IL2CPP编译发的安卓包,将其放置远程服务器上供终端下载,并加载libil2cpp.so、global-metadata.dat。因此,比Mono发的包相比,代码编译速度提高不少,还可以缩减包体大小。另外,用户不重新下载安卓包,以实现游戏大版本、小版本游戏逻辑功能的更新,这样用户只需要下载几个更新文件就能继续体验游戏,减少用户下载新包的时间和流量、增加用户游戏体验、增加游戏流畅度。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种更新U3D安卓游戏的方法,其特征在于,包括以下步骤:
基于unity工程设置发包环境;
修改需要更新的逻辑代码,并发出更新安卓包;
将所述更新安卓包文件下的libil2cpp.so、global-metadata.dat放置远程服务器上;
启动游戏,检测远程资源是否被改动,如果有更新,则下载libil2cpp.so、global-metadata.dat;
重启游戏,并加载libil2cpp.so、global-metadata.dat。
2.根据权利要求1所述的更新U3D安卓游戏的方法,其特征在于,所述基于unity工程设置发包环境的步骤,进一步包括:
将环境设为Android环境,将Scripting Backend设为IL2CPP,将Device Filter设为ARMv7;
编写与远程下载相关的代码;
修改LoadMetadataFile,并生成新的安装目录。
3.根据权利要求1所述的更新U3D安卓游戏的方法,其特征在于,通过C#编码进行所述修改需要更新的逻辑代码的步骤。
4.根据权利要求1所述的更新U3D安卓游戏的方法,其特征在于,所述将所述更新安卓包文件下的libil2cpp.so、global-metadata.dat放置远程服务器上的步骤,进一步包括:
使用WinRar解压工具解压更新安卓包。
5.根据权利要求2所述的更新U3D安卓游戏的方法,其特征在于,所述启动游戏,检测远程资源是否被改动,如果有更新,则下载libil2cpp.so、global-metadata.dat的步骤,进一步包括:
将libil2cpp.so、global-metadata.dat下载到所述新的安装目录。
6.根据权利要求1所述的更新U3D安卓游戏的方法,其特征在于,所述重启游戏,并加载libil2cpp.so、global-metadata.dat的步骤,进一步包括:
调用安卓重启接口,检测所述新的安装目录是否有libil2cpp.so文件变动;
截断***的原有的libil2cpp.so的启动;
加载所述新安装目录下的libil2cpp.so;
加载global-metadata.dat。
7.根据权利要求6所述的更新U3D安卓游戏的方法,其特征在于,所述加载global-metadata.dat的步骤,进一步包括:
扫描所述新安装目录下是否存在global-metadata.dat;
如果存在,则加载新的global-metadata.dat,否则加载原有的global-metadata.dat。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811294749.6A CN109683927A (zh) | 2018-11-01 | 2018-11-01 | 一种更新u3d安卓游戏的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811294749.6A CN109683927A (zh) | 2018-11-01 | 2018-11-01 | 一种更新u3d安卓游戏的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109683927A true CN109683927A (zh) | 2019-04-26 |
Family
ID=66185268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811294749.6A Withdrawn CN109683927A (zh) | 2018-11-01 | 2018-11-01 | 一种更新u3d安卓游戏的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109683927A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110314375A (zh) * | 2019-06-25 | 2019-10-11 | 努比亚技术有限公司 | 一种游戏场景的录制方法、终端及计算机可读存储介质 |
CN111158750A (zh) * | 2019-12-26 | 2020-05-15 | 北京金山安全软件有限公司 | 一种基于Unity的游戏安装包的打包方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105487885A (zh) * | 2015-11-23 | 2016-04-13 | 盛趣信息技术(上海)有限公司 | 手游热更新方法 |
CN106406945A (zh) * | 2016-09-09 | 2017-02-15 | 武汉斗鱼网络科技有限公司 | 一种安卓***so文件的加载方法及电子设备 |
CN106569863A (zh) * | 2016-11-10 | 2017-04-19 | 福州智永信息科技有限公司 | 基于资源和代码模块化的安卓app资源更新和修复的方法 |
US20170147312A1 (en) * | 2015-11-20 | 2017-05-25 | Google Inc. | Dynamic update of an application in compilation and deployment with warm-swapping |
CN107967139A (zh) * | 2016-10-17 | 2018-04-27 | 网易(杭州)网络有限公司 | 游戏的热更新方法及装置 |
-
2018
- 2018-11-01 CN CN201811294749.6A patent/CN109683927A/zh not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170147312A1 (en) * | 2015-11-20 | 2017-05-25 | Google Inc. | Dynamic update of an application in compilation and deployment with warm-swapping |
CN105487885A (zh) * | 2015-11-23 | 2016-04-13 | 盛趣信息技术(上海)有限公司 | 手游热更新方法 |
CN106406945A (zh) * | 2016-09-09 | 2017-02-15 | 武汉斗鱼网络科技有限公司 | 一种安卓***so文件的加载方法及电子设备 |
CN107967139A (zh) * | 2016-10-17 | 2018-04-27 | 网易(杭州)网络有限公司 | 游戏的热更新方法及装置 |
CN106569863A (zh) * | 2016-11-10 | 2017-04-19 | 福州智永信息科技有限公司 | 基于资源和代码模块化的安卓app资源更新和修复的方法 |
Non-Patent Citations (1)
Title |
---|
管理员: "[教程]unity游戏修改so文件", 《游戏安全实验室》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110314375A (zh) * | 2019-06-25 | 2019-10-11 | 努比亚技术有限公司 | 一种游戏场景的录制方法、终端及计算机可读存储介质 |
CN111158750A (zh) * | 2019-12-26 | 2020-05-15 | 北京金山安全软件有限公司 | 一种基于Unity的游戏安装包的打包方法及装置 |
CN111158750B (zh) * | 2019-12-26 | 2023-09-26 | 北京金山安全软件有限公司 | 一种基于Unity的游戏安装包的打包方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10795652B2 (en) | Generating native code from intermediate language code for an application | |
US10296323B2 (en) | System and method for fast initial and incremental deployment of apps | |
US8612947B2 (en) | System and method for remotely compiling multi-platform native applications for mobile devices | |
US10860303B2 (en) | Selective operating system patching/updating | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
US9262154B2 (en) | Enhanced upgrade path | |
CN104375849B (zh) | 加载内核的方法及装置 | |
CN107391104B (zh) | 一种客户端与react native代码的更新依赖管理方法、装置及*** | |
CN109614165B (zh) | 一种com组件的多版本并行运行方法和装置 | |
CN105302563B (zh) | 移动应用服务的插件化方法及*** | |
US8443084B2 (en) | Enhanced upgrade path | |
CN107357607B (zh) | 文件数据的读取方法及装置 | |
CN104991793A (zh) | 一种用于应用程序分包的方法、装置以及*** | |
CN106648559A (zh) | Android应用插件化开发***和方法 | |
JP2004152022A (ja) | 通信装置、プログラムおよび記録媒体 | |
CN109857432B (zh) | 一种游戏应用的热更新方法和装置 | |
CN109683927A (zh) | 一种更新u3d安卓游戏的方法 | |
CN113760339A (zh) | 漏洞修复方法和装置 | |
CN105260196A (zh) | 一种Android***支持QT APP的实现方法 | |
CN114115959A (zh) | App热修复方法及其装置、可读存储介质和计算机设备 | |
CN110046504B (zh) | 基于Linker的SO文件隐藏方法、储存介质及装置 | |
CN111008025A (zh) | 字体静默安装方法、装置、设备及存储介质 | |
CN109144605A (zh) | 一种应用程序处理方法和装置 | |
KR20070081868A (ko) | 이동통신시스템에서 효율적으로 소프트웨어를 업데이트하는방법 | |
CN108664259B (zh) | 一种进行应用安装的方法和终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20190426 |