Android实战——Cocos游戏容器搭建篇

一、前言

现在市面上很多app有游戏中心功能,最早的有微信小游戏和QQ小游戏,再后来像bilibili、喜马拉雅、爱奇艺、比心等等应用中也加入了游戏中心模块。本篇文章将介绍如何上手搭建cocos creater游戏容器,先来看看效果:

image

二、准备工作

  1. 下载并安装最新版本CocosDashboard
  2. 在Dashborad下载最新版本编辑器
image
  1. 在Android Studio安装NDK,我这里安装的是21.1.6352462,目前为止比较稳定
image
  1. 在CocosDashboard新建HelloWorld项目并打开运行,我这里用的3.1.1版本
image
  1. 打开CocosCreator菜单栏偏好设置,在外部程序栏中设置Android NDK和Android SDK路径
image

三、构建cocos游戏.so文件

  1. 在CocosCreator菜单栏选择项目-构建发布,选择发布平台:安卓,点击构建,等大概几分钟
image
  1. 成功后,用Android Studio打开文件夹里生成的proj项目,并运行该项目到手机上,这里游戏资源加载的是proj同级目录assets,后续,我们会将assets压缩包zip存放在我们服务器,达到用户下载解压后加载启动游戏的目的。

  2. 为了后续游戏容器能加载本地filePath下的游戏资源,需要修改JniCocosActivity.cpp里的Java_com_cocos_lib_CocosActivity_onCreateNative方法

image
  1. ./gradlew assembleRelease打release包, 将instantapp-release.apk后缀改成zip,解压后获取lib下arm64-v8a/armeabi-v7a下的libcocos.so(构建版本设置那里可以勾选不同架构)

四、制作自己的游戏容器

  1. 创建module,包名为com.cocos.lib(为了和.so文件里保持一致,不然无法调用c方法)

  2. module的清单文件加

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  1. 将/Applications/CocosCreator/Creator/3.1.1/CocosCreator.app/Contents/Resources/resources/3d/engine-native/cocos/platform/android/java/libs拷贝到module/libs下

  2. module下build.gradle添加

implementation fileTree(include: ['*.jar'], dir: 'libs')
  1. 将.so文件放在module/src/main/jniLibs/下
  2. 将/Applications/CocosCreator/Creator/3.1.1/CocosCreator.app/Contents/Resources/resources/3d/engine-native/cocos/platform/android/java/src/com/cocos/lib下的java文件复制到module/src/main/java/com.cocos.lib下
  3. 修改文件CocosActivity.java,因为游戏页面官方推荐用多进程来做,所以这里退出游戏,即将游戏进程kill
// 加一个filePath参数
private native void onCreateNative(Activity activity, AssetManager assetManager, String obbPath, int sdkVersion, String filePath);

// 外部传入游戏资源路径
protected String filePath() {
    return "";
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    onCreateNative(this, getAssets(), getAbsolutePath(getObbDir()), Build.VERSION.SDK_INT, filePath());
}

@Override
public void onBackPressed() {
    super.onBackPressed();
    System.exit(0);
}

五、总结

自此,我们游戏容器制作完毕,我也将该篇的游戏容器module传到了jitpack,可以直接使用:

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
}
dependencies {
       implementation 'com.github.qq326646683:cocos-creator-android:1.0.0'
}

六、如何使用

  1. 文件读写、网络权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
  1. 下载游戏zip并解压
  2. 继承CocosActivity,并将解压后的路径赋值给filePath
class CocosGameActivity: CocosActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }

    override fun filePath() = intent.getStringExtra("path")
}
  1. 清单文件
 <application>
        <meta-data
            android:name="android.app.lib_name"
            android:value="cocos" />
        <activity android:name=".CocosGameActivity" android:process=":cocos"/>
  1. 本篇的module和事例app代码放在gitlab

七、后续计划

cocos游戏和android通信,因为牵扯到多进程,通信变的麻烦,后续计划将这部分内容封装在module library,方便使用者调用


完结,撒花🎉

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容