CN109683927A - 一种更新u3d安卓游戏的方法 - Google Patents

一种更新u3d安卓游戏的方法 Download PDF

Info

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
Application number
CN201811294749.6A
Other languages
English (en)
Inventor
段俊斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Snail Digital Technology Co Ltd
Original Assignee
Suzhou Snail Digital Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Snail Digital Technology Co Ltd filed Critical Suzhou Snail Digital Technology Co Ltd
Priority to CN201811294749.6A priority Critical patent/CN109683927A/zh
Publication of CN109683927A publication Critical patent/CN109683927A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version 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)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

一种更新U3D安卓游戏的方法,包括步骤:基于unity工程设置发包环境;修改需要更新的逻辑代码,并发出更新安卓包;将所述更新安卓包文件下的libil2cpp.so、global‑metadata.dat放置远程服务器上;启动游戏,检测远程资源是否被改动,如果有更新,则下载libil2cpp.so、global‑metadata.dat;重启游戏,并加载libil2cpp.so、global‑metadata.dat。能够缩减包体大小,并且只需下载几个更新文件就能够更新游戏,减少用户下载新包的时间和流量、增加用户游戏体验、增加游戏流畅度。

Description

一种更新U3D安卓游戏的方法
技术领域
本发明涉及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。
CN201811294749.6A 2018-11-01 2018-11-01 一种更新u3d安卓游戏的方法 Withdrawn CN109683927A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 网易(杭州)网络有限公司 游戏的热更新方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
管理员: "[教程]unity游戏修改so文件", 《游戏安全实验室》 *

Cited By (3)

* Cited by examiner, † Cited by third party
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
CN109491695B (zh) 一种集成安卓应用的增量更新方法
EP3128421B1 (en) Method, device, and system for achieving java application installation by cloud compilation
US9032383B2 (en) Automatically updating applications on a client's device without interrupting the user's experience
CN105786538B (zh) 基于安卓系统的软件升级方法和装置
US20170220335A1 (en) System and Method for Fast Initial and Incremental Deployment of Apps
US10860303B2 (en) Selective operating system patching/updating
US8701104B2 (en) System and method for user agent code patch management
CN105302563B (zh) 移动应用服务的插件化方法及系统
TWI649694B (zh) 一種安卓動態框架及其方法
US8443084B2 (en) Enhanced upgrade path
CN107357607B (zh) 文件数据的读取方法及装置
CN104991793A (zh) 一种用于应用程序分包的方法、装置以及系统
CN109002320B (zh) 用于软件开发包的更新方法、系统、电子设备及存储介质
JP2004152022A (ja) 通信装置、プログラムおよび記録媒体
CN109683927A (zh) 一种更新u3d安卓游戏的方法
CN105260196A (zh) 一种Android系统支持QT APP的实现方法
CN109144605A (zh) 一种应用程序处理方法和装置
KR20070081868A (ko) 이동통신시스템에서 효율적으로 소프트웨어를 업데이트하는방법
CN107844309B (zh) 一种系统数据处理方法及装置
CN117290042A (zh) 跨平台动态渲染app原生界面的方法及系统
CN107784204B (zh) 应用脱壳方法和装置
KR101437838B1 (ko) 이종 플랫폼을 위한 컨텐츠 서비스 시스템 및 방법
CN111443933A (zh) 移动终端芯片在线更新方法、装置、终端设备及存储介质
CN102955689B (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