CN108733378A - 支持多个原生Cocos游戏接入到安卓应用平台的方法 - Google Patents

支持多个原生Cocos游戏接入到安卓应用平台的方法 Download PDF

Info

Publication number
CN108733378A
CN108733378A CN201810499403.3A CN201810499403A CN108733378A CN 108733378 A CN108733378 A CN 108733378A CN 201810499403 A CN201810499403 A CN 201810499403A CN 108733378 A CN108733378 A CN 108733378A
Authority
CN
China
Prior art keywords
game
cocos
primary
application platform
target
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.)
Granted
Application number
CN201810499403.3A
Other languages
English (en)
Other versions
CN108733378B (zh
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.)
Wuhan Micro Network Technology Co Ltd
Original Assignee
Wuhan Micro Network 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 Wuhan Micro Network Technology Co Ltd filed Critical Wuhan Micro Network Technology Co Ltd
Priority to CN201810499403.3A priority Critical patent/CN108733378B/zh
Publication of CN108733378A publication Critical patent/CN108733378A/zh
Application granted granted Critical
Publication of CN108733378B publication Critical patent/CN108733378B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • 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)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种支持多个原生Cocos游戏接入到安卓应用平台的方法,本发明通过对原生Cocos游戏对应的安卓游戏源代码进行部分修改,在游戏源代码修改完成之后打包编译成目标Cocos游戏,目标Cocos游戏接入该安卓应用平台,即达到的有益效果是能够在一个安卓应用平台中接入多个原生Cocos游戏,本发明中的原生Cocos游戏的运行速度,运行质量和运行效果都可以达到用户满意的程度,即使该安卓应用平台安装在中等或低端手机中,用户通过该安卓应用平台运行这些原生Cocos游戏,也不会出现渲染速度变慢、画质会降低、以及卡顿等的现象,提高了用户的使用体验。

Description

支持多个原生Cocos游戏接入到安卓应用平台的方法
技术领域
本发明涉及安卓游戏技术领域,尤其涉及一种支持多个原生Cocos游戏接入到安卓应用平台的方法、装置和计算机可读存储介质。
背景技术
Cocos是目前流行的跨平台2D游戏设计制作软件,制作游戏过程方便快捷,且提供一套发布游戏到多平台的方案。但其发布方案为生成单独的app应用或者生成一个web项目进行游戏。而为了在单一应用中接入多个小游戏,这里不能直接采用其发布到原生的方案,需要发布到一个web方案,从而通过原生应用通过WebView来打开该游戏。
该方案在较好的手机上没有多大问题,但对于中等或低端手机而言,可能会出现多种问题,部分手机不支持webGL功能,因此其渲染速度以及画质会降低,容易出现卡顿,部分手机内存较少,cpu性能较低,其打开webview及加载对应的JS文件的时间过长,超过30秒,即使在最后打开了该游戏,这样的时间对于商业应用也是不可接受的。
由于WebView本身的复杂性,加上安卓手机的版本、型号的复杂性,在较差的手机上运行打开Cocos发布的web版游戏,其性能很差,且游戏体验也很差。
发明内容
本发明的主要目的在于提供了一种支持多个原生Cocos游戏接入到安卓应用平台的方法、装置和计算机可读存储介质,旨在解决目前多个原生Cocos游戏无法接入到一安卓应用平台APP的问题。
为实现上述目的,本发明提供了一种支持多个原生Cocos,戏接入到安卓应用平台的实现方法所述方法包括:
构建安卓应用平台,基于所述安卓应用平台生成不同的原生Cocos游戏所对应的安卓游戏源代码;
分别对各安卓游戏源代码中的activity实例中的oncreate函数的任务权限taskRoot限定进行删除;
分别对各原生Cocos游戏添加并重置资源文件查询目录;
分别删除各安卓游戏源代码中位于Cocos2dxHelper中的terminateProcess函数;
分别在各原生Cocos游戏的CCApplicationProtocol.h文件中添加方法virtualvoid clearSc()=0;
分别在各原生Cocos游戏的AppDelegate..h文件中添加方法virtualvoidclearSc();
分别在各原生Cocos游戏中的AppDeletegate.cpp文件中添加方法clearSc(),以释放所述原生Cocos游戏的内存;
分别对各原生Cocos游戏中的CCDirector.cpp文件进行修改,以对所述原生Cocos游戏的原生层的内存和变量进行重置;
分别对各原生Cocos游戏对应的安卓游戏源代码进行打包,以编译成目标Cocos游戏;
分别提取各目标Cocos游戏中的shared object文件,将所述shared object文件中的Java相关文件拷贝至所述安卓应用平台对应的模块中,以使得所述安卓应用平台通过addSearchPath方法打开不同的目标Cocos游戏。
优选地,所述分别对各原生Cocos游戏添加并重置资源文件查询目录,具体包括:
分别在各原生Cocos游戏的Cocos2dxActivity实例下添加addSearchPath方法,在javaactivity-android.cpp文件中添加与所述addSearchPath方法相应的处理,并对addSearchPath方法添加重置处理。
优选地,所述方法还包括:
获取用户基于所述安卓应用平台输入的游戏选择指令;
根据所述游戏选择指令确定用户所选取的目标Cocos游戏对应的游戏标识;
根据所述游戏标识获取所述目标Cocos游戏的本地资源版本号,并根据所述游戏标识从服务器中获取目标Cocos游戏的最新版本号;
将所述目标Cocos游戏的本地资源版本号与所述目标Cocos游戏的最新版本号进行比较,在所述本地资源版本号与所述最新版本号不同时,从所述服务器中获取所述目标Cocos游戏的最新版本号对应的游戏资源压缩包;
通过获取到的所述游戏资源压缩包对所述目标Cocos游戏进行更新。
优选地,所述通过获取到的所述游戏资源压缩包对所述目标Cocos游戏进行更新之后,还包括:
根据所述游戏标识确定所述目标Cocos游戏的对应的资源文件查询目录;
将所述资源文件查询目录传递给继承自所述Cocos2dxActivity的CocosGameActivity实例中,以使得所述CocosGameActivity实例在native层进行初始化操作,并将所述资源文件查询目录的路径通过所述addSearchPath方法传递给native层进行渲染处理,以启动所述所述目标Cocos游戏。
此外,为实现上述目的,本发明还提供一种支持多个原生Cocos游戏接入到安卓应用平台的实现装置,所述装置包括,存储器、处理器及存储在所述存储器上并可在所述处理器上运行的支持多个原生Cocos游戏接入到安卓应用平台的实现程序,所述支持多个原生Cocos游戏接入到安卓应用平台的实现程序配置为实现如上所述的支持多个原生Cocos游戏接入到安卓应用平台的方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有支持多个原生Cocos游戏接入到安卓应用平台的实现程序,所述支持多个原生Cocos游戏接入到安卓应用平台的实现程序被处理器执行时实现如上所述的支持多个原生Cocos游戏接入到安卓应用平台的方法的步骤。
本发明通过对原生Cocos游戏对应的安卓游戏源代码进行部分修改,在游戏源代码修改完成之后打包编译成目标Cocos游戏,目标Cocos游戏接入该安卓应用平台,即达到的有益效果是能够在一个安卓应用平台中接入多个原生Cocos游戏,本发明中的原生Cocos游戏的运行速度,运行质量和运行效果都可以达到用户满意的程度,即使该安卓应用平台安装在中等或低端手机中,用户通过该安卓应用平台运行这些原生Cocos游戏,也不会出现渲染速度变慢、画质会降低、以及卡顿等的现象,提高了用户的使用体验。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的一种支持多个原生COCOS游戏接入到安卓应用平台的实现装置的结构示意图;
图2为本发明一种支持多个原生Cocos游戏接入到安卓应用平台的方法第一实施例的流程示意图;
图3为本发明一种支持多个原生Cocos游戏接入到安卓应用平台的方法第二实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的支持多个原生COCOS游戏接入到安卓应用平台的实现装置结构示意图。
如图1所示,所述支持多个原生COCOS游戏接入到安卓应用平台的实现装置可以是一种独立的终端设备,该装置可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可选的可以包括标准的有线接口、无线接口。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。
本领域技术人员可以理解,图1中示出的装置结构并不构成对支持多个原生COCOS游戏接入到安卓应用平台的实现装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及支持多个原生COCOS游戏接入到安卓应用平台的实现程序。
本实施例所述支持多个原生COCOS游戏接入到安卓应用平台的实现装置通过处理器1001调用存储器1005中存储的支持多个原生COCOS游戏接入到安卓应用平台的实现程序,并执行以下操作:
构建安卓应用平台,基于所述安卓应用平台生成不同的原生Cocos游戏所对应的安卓游戏源代码;
分别对各安卓游戏源代码中的activity实例中的oncreate函数的任务权限taskRoot限定进行删除;
分别对各原生Cocos游戏添加并重置资源文件查询目录;
分别删除各安卓游戏源代码中位于Cocos2dxHelper中的terminateProcess函数;
分别在各原生Cocos游戏的CCApplicationProtocol.h文件中添加方法virtualvoid clearSc()=0;
分别在各原生Cocos游戏的AppDelegate.h文件中添加方法virtual voidclearSc();
分别在各原生Cocos游戏中的AppDeletegate.cpp文件中添加方法clearSc(),以释放所述原生Cocos游戏的内存;
分别对各原生Cocos游戏中的CCDirector.cpp文件进行修改,以对所述原生Cocos游戏的原生层的内存和变量进行重置;
分别对各原生Cocos游戏对应的安卓游戏源代码进行打包,以编译成目标Cocos游戏;
分别提取各目标Cocos游戏中的shared object文件,将所述shared object文件中的Java相关文件拷贝至所述安卓应用平台对应的模块中,以使得所述安卓应用平台通过addSearchPath方法打开不同的目标Cocos游戏。
进一步地,处理器1001可以调用存储器1005中存储的支持多个原生Cocos游戏接入到安卓应用平台的实现程序,还执行以下操作:
分别在各原生Cocos游戏的Cocos2dxActivity实例下添加addSearchPath方法,在javaactivity-android.cpp文件中添加与所述addSearchPath方法相应的处理,并对addSearchPath方法添加重置处理。
进一步地,处理器1001可以调用存储器1005中存储的支持多个原生Cocos游戏接入到安卓应用平台的实现程序,还执行以下操作:
获取用户基于所述安卓应用平台输入的游戏选择指令;
根据所述游戏选择指令确定用户所选取的目标Cocos游戏对应的游戏标识;
根据所述游戏标识获取所述目标Cocos游戏的本地资源版本号,并根据所述游戏标识从服务器中获取目标Cocos游戏的最新版本号;
将所述目标Cocos游戏的本地资源版本号与所述目标Cocos游戏的最新版本号进行比较,在所述本地资源版本号与所述最新版本号不同时,从所述服务器中获取所述目标Cocos游戏的最新版本号对应的游戏资源压缩包;
通过获取到的所述游戏资源压缩包对所述目标Cocos游戏进行更新。
进一步地,处理器1001可以调用存储器1005中存储的支持多个原生Cocos游戏接入到安卓应用平台的实现程序,还执行以下操作:
根据所述游戏标识确定所述目标Cocos游戏的对应的资源文件查询目录;
将所述资源文件查询目录传递给继承自所述Cocos2dxActivity的CocosGameActivity实例中,以使得所述CocosGameActivity实例在native层进行初始化操作,并将所述资源文件查询目录的路径通过所述addSearchPath方法传递给native层进行渲染处理,以启动所述所述目标Cocos游戏。
本实施例通过对原生Cocos游戏对应的安卓游戏源代码进行部分修改,在游戏源代码修改完成之后打包编译成目标Cocos游戏,目标Cocos游戏接入该安卓应用平台,即达到的有益效果是能够在一个安卓应用平台中接入多个原生Cocos游戏,本实施例中的原生Cocos游戏的运行速度,运行质量和运行效果都可以达到用户满意的程度,即使该安卓应用平台安装在中等或低端手机中,用户通过该安卓应用平台运行这些原生Cocos游戏,也不会出现渲染速度变慢、画质会降低、以及卡顿等的现象,提高了用户的使用体验。
基于上述硬件结构,提出本实施例一种支持多个原生Cocos游戏接入到安卓应用平台的方法实施例。
参照图2,图2为本实施例一种支持多个原生Cocos游戏接入到安卓应用平台的方法第一实施例的流程示意图。
本实施例中,所述方法包括以下步骤:
步骤S10:构建安卓应用平台,基于所述安卓应用平台生成不同的原生Cocos游戏所对应的安卓游戏源代码;
在具体实现中,首先以程序员操作为例,在设计并制作好一个CocosCreator游戏之后,并设置好对应的安卓打包所需要的环境(NDK,SDK,ANT)之后,点击项目→构建发布,可以得到一个对话框,发布平台设置为安卓,App-ABI选中armeabi–v7a,勾选android-studio(需要安装android studio),点击构建,完成后点击编译,无论编译成功,失败。使用android studio,打开项目./build/jsb-default/frameworks/runtime-src/pro.android-studio/进行编译。生成一个原生Cocos游戏应用apk1。使用同样的方法,生成另外一个原生Cocos游戏应用apk2,将两个游戏应用重命名为zip,或rar后进行解压,得到多个目录文件,对其中的文件进行md5比较,可以发现,其中的差别仅在与assets目录下内容。对两个应用的java,以及native层c++源码进行对比,其生成的内容一致。而打开应用时却是对应的游戏,说明,游戏之间相差的内容只存在于asset文件夹之下。对gradle文件进行观察,可以发现,android studio在构建的过程中,会将cocos creator构建,编译时生成的对应的游戏文件拷贝到app的asset文件夹下,在打开应用时,对这些文件进行加载,解析,最终完成游戏逻辑。
需要说明的是,本实施例的执行主体是支持多个原生COCOS游戏接入到安卓应用平台的实现装置的处理器,而在具体实现中的描述是以程序员为动作执行主体进行的描述,而本实施例的所述支持多个原生COCOS游戏接入到安卓应用平台的实现装置可以自动完成上述程序员的编程指令,自动构建一个安卓应用平台,基于构建好的安卓应用平台生成两个(或者更多)的原生Cocos游戏(即apk1和apk2)所对应的安卓游戏源代码。
步骤S20:分别对各安卓游戏源代码中的activity实例中的oncreate函数的任务权限taskRoot限定进行删除;
可理解的是,由于Cocos Creator的实现并不需要考虑在一个进程中多次启动游戏,因此其在一些处理上并不完善。且其限定了处理的逻辑,因此,这里需要解决相应的问题,从而实现游戏逻辑的完整性。本实施例的步骤S20和步骤S30均是为了实现游戏逻辑的完整性。
具体地,首先取消根activity(activity是安卓四大组件之一)限定,即分别删除Cocos2DxActivity activity和CocosGameActivity中onCreate的taskRoot判定。
需要说明的是,Cocos2DxActivity为Cocos平台初始提供的activity;而CocosGameActivity是我们新增的用于扩展本项目功能的activity,相应代码即“publicclass CocosGameActivity extends Cocos2dxActivity”。
步骤S30:分别对各原生Cocos游戏添加并重置资源文件查询目录;
具体地,分别在各原生Cocos游戏的Cocos2dxActivity实例下添加addSearchPath方法,在javaactivity-android.cpp文件中添加与所述addSearchPath方法相应的处理,并对addSearchPath方法添加重置处理。
可理解的是,添加并重置资源文件查询目录,即在Cocos2dxActivity中添加public static native int addSearchPath(String path);
并在javaactivity-android.cpp中添加对应处理,并在addSearchPath添加重置处理。在打开时,将我们更新得到的资源文件的路径在activity处通过addSearchPath方法传入到native层查询识别即可。
步骤S40:分别删除各安卓游戏源代码中位于Cocos2dxHelper中的terminateProcess函数;
可理解的是,由于Cocos Creator打包生成的内容的一个页面的限制,其结束方案,及内存释放方案均不满足当前应用的状态,需要进行相应的修改,本实施例的以步骤S40到S80为必要处理;
具体地,所述步骤S40,Java层结束游戏处理,去除位于Cocos2dxHelper中的public static void terminateProcess()中的杀进程操作。当前游戏结束时只需要结束游戏,并不需要结束应用。
步骤S50:分别在各原生Cocos游戏的CCApplicationProtocol.h文件中添加方法virtual void clearSc()=0;
步骤S60:分别在各原生Cocos游戏的AppDelegate.h文件中添加方法virtualvoid clearSc();
步骤S70:分别在各原生Cocos游戏中的AppDeletegate.cpp文件中添加方法clearSc(),以释放所述原生Cocos游戏的内存;
其中,方法clearSc()代码为:
步骤S80:分别对各原生Cocos游戏中的CCDirector.cpp文件进行修改,以对所述原生Cocos游戏的原生层的内存和变量进行重置;
具体地,在CCDirector.cpp中添加及修改部分方法,用于对原生层的内存,以及一些变量进行重置,以防止内存泄漏,并使用:
步骤S90:分别对各原生Cocos游戏对应的安卓游戏源代码进行打包,以编译成目标Cocos游戏;
步骤S100:分别提取各目标Cocos游戏中的shared object文件,将所述sharedobject文件中的Java相关文件拷贝至所述安卓应用平台对应的模块中,以使得所述安卓应用平台通过addSearchPath方法打开不同的目标Cocos游戏。
可理解的是,上述从步骤S20到步骤S80将原生Cocos游戏所对应的安卓游戏源代码修改完成之后,打包编译成目标Cocos游戏,生成对应的新的apk,提取出其中的so文件(即shared object文件),并将对应需要的java相关文件拷贝至对应的模块中,在继承Cocos2dxActivity的activity中获取从其它页面传递进来的资源包路径,通过addSearchPath方法进行处理,即可实现多次打开不同的游戏。
本实施例通过对原生Cocos游戏对应的安卓游戏源代码进行部分修改,在游戏源代码修改完成之后打包编译成目标Cocos游戏,目标Cocos游戏接入该安卓应用平台,即达到的有益效果是能够在一个安卓应用平台中接入多个原生Cocos游戏,本实施例中的原生Cocos游戏的运行速度,运行质量和运行效果都可以达到用户满意的程度,即使该安卓应用平台安装在中等或低端手机中,用户通过该安卓应用平台运行这些原生Cocos游戏,也不会出现渲染速度变慢、画质会降低、以及卡顿等的现象,提高了用户的使用体验。
参考图3,图3为本实施例一种支持多个原生Cocos游戏接入到安卓应用平台的方法的第二实施例流程示意图;
本实施例主要支持目标Cocos游戏的热更新,且数目不限,可多次打开。
本实施例中,所述方法还包括:
步骤S01:获取用户基于所述安卓应用平台输入的游戏选择指令,根据所述游戏选择指令确定用户所选取的目标Cocos游戏对应的游戏标识;
具体地,以用户使用手机为例,用户打开手机中的安卓应用平台APP,从安卓应用平台APP中打开Cocos游戏列表节目,从服务器获取所有的目标Cocos游戏,显示时必要的信息及Cocos游戏ID(唯一的游戏标识)
步骤S02:根据所述游戏标识获取所述目标Cocos游戏的本地资源版本号,并根据所述游戏标识从服务器中获取目标Cocos游戏的最新版本号;
具体地,用户从Cocos游戏列表节目点击其中一款目标Cocos游戏,根据游戏ID从服务器中获取所述目标Cocos游戏的本地资源版本号;
步骤S03:将所述目标Cocos游戏的本地资源版本号与所述目标Cocos游戏的最新版本号进行比较,在所述本地资源版本号与所述最新版本号不同时,从所述服务器中获取所述目标Cocos游戏的最新版本号对应的游戏资源压缩包;
可理解的是,服务器版本号与本地资源版本号进行对比,若本地无该戏资源,即认为该版本号为0,若本地资源版本号与服务器版本号一致,则进入步骤S05,否则执行所述从所述服务器中获取所述目标Cocos游戏的最新版本号对应的游戏资源压缩包的步骤,根据版本号以及相应协议,获取游戏资源的压缩包网址,将游戏资源下载,删除原有游戏资源,并将新资源解压到对应的游戏目录中。
步骤S04:通过获取到的所述游戏资源压缩包对所述目标Cocos游戏进行更新。
步骤S05:根据所述游戏标识确定所述目标Cocos游戏的对应的资源文件查询目录;将所述资源文件查询目录传递给继承自所述Cocos2dxActivity的CocosGameActivity实例中,以使得所述CocosGameActivity实例在native层进行初始化操作,并将所述资源文件查询目录的路径通过所述addSearchPath方法传递给native层进行渲染处理,以启动所述所述目标Cocos游戏。
可理解的是,根据游戏名称及游戏类型获取游戏的资源目录,将其传递给CocosGameActivity(继承自Cocos2dxActivity)中,CocosGameActivity在native初始化完成之后,将资源目录的路径通过addSearchPath传递给native层,其后开始渲染,即游戏开始。
本实施例支持多个设计实现的目标Cocos游戏接入到一个安卓应用平台APP中,并支持目标Cocos游戏的热更新,在不更新安卓应用平台APP的情况下,可以对安卓应用平台APP中可玩的目标Cocos游戏项进行更改,包括增加新的Cocos小游戏,删除已有的Cocos小游戏,更改已有的Cocos小游戏信息及玩法等,且数目不限,可多次打开。
此外,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有支持多个原生Cocos游戏接入到安卓应用平台的实现程序,所述支持多个原生Cocos游戏接入到安卓应用平台的实现程序被处理器执行时实现如下操作:
构建安卓应用平台,基于所述安卓应用平台生成不同的原生Cocos游戏所对应的安卓游戏源代码;
分别对各安卓游戏源代码中的activity实例中的oncreate函数的任务权限taskRoot限定进行删除;
分别对各原生Cocos游戏添加并重置资源文件查询目录;
分别删除各安卓游戏源代码中位于Cocos2dxHelper中的terminateProcess函数;
分别在各原生Cocos游戏的CCApplicationProtocol.h文件中添加方法virtualvoid clearSc()=0;
分别在各原生Cocos游戏的AppDelegate.h文件中添加方法virtual voidclearSc();
分别在各原生Cocos游戏中的AppDeletegate.cpp文件中添加方法clearSc(),以释放所述原生Cocos游戏的内存;
分别对各原生Cocos游戏中的CCDirector.cpp文件进行修改,以对所述原生Cocos游戏的原生层的内存和变量进行重置;
分别对各原生Cocos游戏对应的安卓游戏源代码进行打包,以编译成目标Cocos游戏;
分别提取各目标Cocos游戏中的shared object文件,将所述shared object文件中的Java相关文件拷贝至所述安卓应用平台对应的模块中,以使得所述安卓应用平台通过addSearchPath方法打开不同的目标Cocos游戏。
进一步地,所述支持多个原生Cocos游戏接入到安卓应用平台的实现程序被处理器执行时还实现如下操作:
分别在各原生Cocos游戏的Cocos2dxActivity实例下添加addSearchPath方法,在javaactivity-android.cpp文件中添加与所述addSearchPath方法相应的处理,并对addSearchPath方法添加重置处理。
进一步地,所述支持多个原生Cocos游戏接入到安卓应用平台的实现程序被处理器执行时还实现如下操作:
获取用户基于所述安卓应用平台输入的游戏选择指令;
根据所述游戏选择指令确定用户所选取的目标Cocos游戏对应的游戏标识;
根据所述游戏标识获取所述目标Cocos游戏的本地资源版本号,并根据所述游戏标识从服务器中获取目标Cocos游戏的最新版本号;
将所述目标Cocos游戏的本地资源版本号与所述目标Cocos游戏的最新版本号进行比较,在所述本地资源版本号与所述最新版本号不同时,从所述服务器中获取所述目标Cocos游戏的最新版本号对应的游戏资源压缩包;
通过获取到的所述游戏资源压缩包对所述目标Cocos游戏进行更新。
进一步地,所述支持多个原生Cocos游戏接入到安卓应用平台的实现程序被处理器执行时还实现如下操作:
根据所述游戏标识确定所述目标Cocos游戏的对应的资源文件查询目录;
将所述资源文件查询目录传递给继承自所述Cocos2dxActivity的CocosGameActivity实例中,以使得所述CocosGameActivity实例在native层进行初始化操作,并将所述资源文件查询目录的路径通过所述addSearchPath方法传递给native层进行渲染处理,以启动所述所述目标Cocos游戏。
本实施例通过对原生Cocos游戏对应的安卓游戏源代码进行部分修改,在游戏源代码修改完成之后打包编译成目标Cocos游戏,目标Cocos游戏接入该安卓应用平台,即达到的有益效果是能够在一个安卓应用平台中接入多个原生Cocos游戏,本实施例中的原生Cocos游戏的运行速度,运行质量和运行效果都可以达到用户满意的程度,即使该安卓应用平台安装在中等或低端手机中,用户通过该安卓应用平台运行这些原生Cocos游戏,也不会出现渲染速度变慢、画质会降低、以及卡顿等的现象,提高了用户的使用体验。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本实施例实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本实施例各个实施例所述的方法。
以上仅为本实施例的优选实施例,并非因此限制本实施例的专利范围,凡是利用本实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本实施例的专利保护范围内。

Claims (6)

1.一种支持多个原生Cocos游戏接入到安卓应用平台的方法,其特征在于,所述方法包括:
构建安卓应用平台,基于所述安卓应用平台生成不同的原生Cocos游戏所对应的安卓游戏源代码;
分别对各安卓游戏源代码中的activity实例中的oncreate函数的任务权限taskRoot限定进行删除;
分别对各原生Cocos游戏添加并重置资源文件查询目录;
分别删除各安卓游戏源代码中位于Cocos2dxHelper中的terminateProcess函数;
分别在各原生Cocos游戏的CCApplicationProtocol.h文件中添加方法virtual voidclearSc()=0;
分别在各原生Cocos游戏的AppDelegate.h文件中添加方法virtual void clearSc();
分别在各原生Cocos游戏中的AppDeletegate.cpp文件中添加方法clearSc(),以释放所述原生Cocos游戏的内存;
分别对各原生Cocos游戏中的CCDirector.cpp文件进行修改,以对所述原生Cocos游戏的原生层的内存和变量进行重置;
分别对各原生Cocos游戏对应的安卓游戏源代码进行打包,以编译成目标Cocos游戏;
分别提取各目标Cocos游戏中的shared object文件,将所述shared object文件中的Java相关文件拷贝至所述安卓应用平台对应的模块中,以使得所述安卓应用平台通过addSearchPath方法打开不同的目标Cocos游戏。
2.如权利要求1所述的方法,其特征在于,所述分别对各原生Cocos游戏添加并重置资源文件查询目录,具体包括:
分别在各原生Cocos游戏的Cocos2dxActivity实例下添加addSearchPath方法,在javaactivity-android.cpp文件中添加与所述addSearchPath方法相应的处理,并对addSearchPath方法添加重置处理。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
获取用户基于所述安卓应用平台输入的游戏选择指令;
根据所述游戏选择指令确定用户所选取的目标Cocos游戏对应的游戏标识;
根据所述游戏标识获取所述目标Cocos游戏的本地资源版本号,并根据所述游戏标识从服务器中获取目标Cocos游戏的最新版本号;
将所述目标Cocos游戏的本地资源版本号与所述目标Cocos游戏的最新版本号进行比较,在所述本地资源版本号与所述最新版本号不同时,从所述服务器中获取所述目标Cocos游戏的最新版本号对应的游戏资源压缩包;
通过获取到的所述游戏资源压缩包对所述目标Cocos游戏进行更新。
4.如权利要求3所述的方法,其特征在于,所述通过获取到的所述游戏资源压缩包对所述目标Cocos游戏进行更新之后,还包括:
根据所述游戏标识确定所述目标Cocos游戏的对应的资源文件查询目录;
将所述资源文件查询目录传递给继承自所述Cocos2dxActivity的CocosGameActivity实例中,以使得所述CocosGameActivity实例在native层进行初始化操作,并将所述资源文件查询目录的路径通过所述addSearchPath方法传递给native层进行渲染处理,以启动所述所述目标Cocos游戏。
5.一种支持多个原生Cocos游戏接入到安卓应用平台的实现装置,其特征在于,所述装置包括,存储器、处理器及存储在所述存储器上并可在所述处理器上运行的支持多个原生Cocos游戏接入到安卓应用平台的实现程序,所述支持多个原生Cocos游戏接入到安卓应用平台的实现程序配置为实现如权利要求1至4中任一项所述的支持多个原生Cocos游戏接入到安卓应用平台的方法的步骤。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有支持多个原生Cocos游戏接入到安卓应用平台的实现程序,所述支持多个原生Cocos游戏接入到安卓应用平台的实现程序被处理器执行时实现如权利要求1至4中任一项所述的支持多个原生Cocos游戏接入到安卓应用平台的方法的步骤。
CN201810499403.3A 2018-05-22 2018-05-22 支持多个原生Cocos游戏接入到安卓应用平台的方法 Active CN108733378B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810499403.3A CN108733378B (zh) 2018-05-22 2018-05-22 支持多个原生Cocos游戏接入到安卓应用平台的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810499403.3A CN108733378B (zh) 2018-05-22 2018-05-22 支持多个原生Cocos游戏接入到安卓应用平台的方法

Publications (2)

Publication Number Publication Date
CN108733378A true CN108733378A (zh) 2018-11-02
CN108733378B CN108733378B (zh) 2021-10-08

Family

ID=63935186

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810499403.3A Active CN108733378B (zh) 2018-05-22 2018-05-22 支持多个原生Cocos游戏接入到安卓应用平台的方法

Country Status (1)

Country Link
CN (1) CN108733378B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111324376A (zh) * 2020-02-28 2020-06-23 北京无限光场科技有限公司 功能配置方法、装置、电子设备及计算机可读介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140094304A1 (en) * 2012-09-28 2014-04-03 Red Robot Labs, Inc. Apparatus and Method for In-Game Video Capture
CN106293761A (zh) * 2016-08-17 2017-01-04 网易(杭州)网络有限公司 用于生成游戏编辑器和插件以及数据处理的方法及装置
CN106815004A (zh) * 2015-12-01 2017-06-09 北京触控科技有限公司 一种兼容不同Cocos2d-x版本的方法
CN107133206A (zh) * 2017-05-31 2017-09-05 北京企鹅童话科技有限公司 一种数字内容制作和展示工具及其应用

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140094304A1 (en) * 2012-09-28 2014-04-03 Red Robot Labs, Inc. Apparatus and Method for In-Game Video Capture
CN106815004A (zh) * 2015-12-01 2017-06-09 北京触控科技有限公司 一种兼容不同Cocos2d-x版本的方法
CN106293761A (zh) * 2016-08-17 2017-01-04 网易(杭州)网络有限公司 用于生成游戏编辑器和插件以及数据处理的方法及装置
CN107133206A (zh) * 2017-05-31 2017-09-05 北京企鹅童话科技有限公司 一种数字内容制作和展示工具及其应用

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
GANYUE1261662926118: "如果要把游戏嵌入另一个应用,会崩溃!", 《HTTPS://FORUM.COCOS.ORG/T/TOPIC/53484》 *
H AKSHAY KUMAR等: "Multi-game automation approach for Cocos-2dx based card game", 《2017 8TH INTERNATIONAL CONFERENCE ON COMPUTING, COMMUNICATION AND NETWORKING TECHNOLOGIES (ICCCNT)》 *
JIESHIDONGLIN等: "cocosjs与安卓原生集成", 《HTTPS://BLOG.CSDN.NET/MU_CJGM/ARTICLE/DETAILS/52372089》 *
RAYDELTO HERNANDEZ: "Building Android Games with Cocos2d-x", 《HTTPS://WWW.PACKTPUB.COM/PRODUCT/BUILDING-ANDROID-GAMES-WITH-COCOS2D-X/9781785283833》 *
RING_1992: "Android应用内嵌cocos2dx游戏项目", 《HTTPS://WWW.CNBLOGS.COM/RING1992/P/7640518.HTML》 *
马超等: "基于Lua动态脚本语言Cocos2d-x应用开发的技术研究", 《软件工程师》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111324376A (zh) * 2020-02-28 2020-06-23 北京无限光场科技有限公司 功能配置方法、装置、电子设备及计算机可读介质
CN111324376B (zh) * 2020-02-28 2023-11-21 北京有竹居网络技术有限公司 功能配置方法、装置、电子设备及计算机可读介质

Also Published As

Publication number Publication date
CN108733378B (zh) 2021-10-08

Similar Documents

Publication Publication Date Title
RU2363039C2 (ru) Контейнер данных для данных контента пользовательского интерфейса
CN107506221B (zh) 应用程序升级方法、装置及设备
CN107967139B (zh) 游戏的热更新方法及装置
CN110764791A (zh) 小程序的渠道适配方法、装置及电子设备
CN112256286B (zh) 一种应用运行的方法、装置及计算机存储介质
US9477497B2 (en) Methods for determining resource dependency and systems thereof
WO2012022835A2 (en) Method and apparatus for managing application resources via policy rules
CN110321131B (zh) 业务组件打包方法、系统及服务器
CN105700925A (zh) 一种app的界面实现方法和装置
CN109032820A (zh) 应用程序版本兼容的处理方法及装置
CN109857432A (zh) 一种游戏应用的热更新方法和装置
CN108182070B (zh) 定制安卓系统rom的方法、装置及终端设备
CN109445770B (zh) 一种错误码的处理方法、装置、介质及设备
US10268647B2 (en) Asset catalog layered image support
CN108733378A (zh) 支持多个原生Cocos游戏接入到安卓应用平台的方法
CN109918112A (zh) 游戏热更新方法、装置和存储介质
CN110941443B (zh) 修改sdk中文件名的方法、装置及电子设备
CN116795397A (zh) 应用管理方法、应用管理装置以及计算机可读存储介质
KR101482152B1 (ko) 페이지 연동 기능을 구비한 웹 어플리케이션 실행 장치 및 방법
CN109933355A (zh) 应用程序升级方法及装置
CN108008984A (zh) 一种资源文件下载更新方法及装置
CN107402749A (zh) 实现图片加载库的方法及装置
Makki et al. Scalable and manageable customization of workflows in multi-tenant saas offerings
CN113961234A (zh) 一种Linux发行版本的构建方法及相关装置
US12014195B2 (en) System for providing an adaptable plugin framework for application transformation to cloud

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
GR01 Patent grant
GR01 Patent grant