Android实战之Cocos游戏容器搭建

目录
  • 一、前言
  • 二、准备工作
    • 三、构建cocos游戏.so文件
  • 四、制作自己的游戏容器
  • 五、总结
  • 六、如何使用

一、前言

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

二、准备工作

  • 安装最新版本CocosDashboard
  • 在Dashborad下载最新版本编辑器

  • 在Android Studio安装NDK,我这里安装的是21.1.6352462,目前为止比较稳定

  • 在CocosDashboard新建HelloWorld项目并打开运行,我这里用的3.1.1版本

  • 打开CocosCreator菜单栏偏好设置,在外部程序栏中设置Android NDK和Android SDK路径

三、构建cocos游戏.so文件

  • 在CocosCreator菜单栏选择项目-构建发布,选择发布平台:安卓,点击构建,等大概几分钟

  • 成功后,用Android Studio打开文件夹里生成的proj项目,并运行该项目到手机上,这里游戏资源加载的是proj同级目录assets,后续,我们会将assets压缩包zip存放在我们服务器,达到用户下载解压后加载启动游戏的目的。
  • 为了后续游戏容器能加载本地filePath下的游戏资源,需要修改JniCocosActivity.cpp里的Java_com_cocos_lib_CocosActivity_onCreateNative方法

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

四、制作自己的游戏容器

  • 创建module,包名为com.cocos.lib(为了和.so文件里保持一致,不然无法调用c方法)
  • module的清单文件加
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  • 将/Applications/CocosCreator/Creator/3.1.1/CocosCreator.app/Contents/Resources/resources/3d/engine-native/cocos/platform/android/java/libs拷贝到module/libs下
  • module下build.gradle添加
implementation fileTree(include: ['*.jar'], dir: 'libs')
  • 将.so文件放在module/src/main/jniLibs/下
  • 将/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下
  • 修改文件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'
}

六、如何使用

  • 文件读写、网络权限
<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" />
  • 下载游戏zip并解压
  • 继承CocosActivity,并将解压后的路径赋值给filePath
class CocosGameActivity: CocosActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }
    override fun filePath() = intent.getStringExtra("path")
}

清单文件:

 <application>
        <meta-data
            android:name="android.app.lib_name"
            android:value="cocos" />
        <activity android:name=".CocosGameActivity" android:process=":cocos"/
(0)

相关推荐

  • cocos2d-2.0-x-2.0.3 交叉编译到android报错解决

    我用的是cocos2d-2.0-x-2.0.3 之前弄了一天也没成功 今天来了下载了最新的ndk8 更新了sdk 又重新是了一遍 居然成功了,不知道是工具的版本问题还是哪一步出错误了,在这里整理一下: 首先各个工具都下下来配置好,然后将cygwin中的.bash_profile这个文件打开 在最后加上ndk的路径 NDK_ROOT=/cygdrive/c/android-ndk-r8d export NDK_ROOT 2.找到cocos2dx中的create-android-project.ba

  • 用于cocos2d-x引擎(ndk)中为android项目生成编译文件列表

    复制代码 代码如下: package com.leeass.generate; import java.io.File;import java.io.FileFilter;import java.io.FileNotFoundException; /** * 用于cocos2d-x引擎中android项目编译文件列表生成 * @author leeassamite * */public class GenerateAndroidMakefile { /** 分隔符 */ private stat

  • Android实战之Cocos游戏容器搭建

    目录 一.前言 二.准备工作 三.构建cocos游戏.so文件 四.制作自己的游戏容器 五.总结 六.如何使用 一.前言 现在市面上很多app有游戏中心功能,最早的有微信小游戏和QQ小游戏,再后来像bilibili.喜马拉雅.爱奇艺.比心等等应用中也加入了游戏中心模块.本篇文章将介绍如何上手搭建cocos creater游戏容器,先来看看效果: 二.准备工作 安装最新版本CocosDashboard 在Dashborad下载最新版本编辑器 在Android Studio安装NDK,我这里安装的是

  • Android实战打飞机游戏之子弹生成与碰撞以及爆炸效果(5)

    Android实战打飞机游戏子弹生成,新建子弹类 public class Bullet { // 子弹图片资源 public Bitmap bmpBullet; // 子弹的坐标 public int bulletX, bulletY; // 子弹的速度 public int speed; // 子弹的种类以及常量 public int bulletType; // 主角的 public static final int BULLET_PLAYER = -1; // 鸭子的 public st

  • 打飞机游戏终极BOSS Android实战打飞机游戏完结篇

    本文实例为大家分享了打飞机游戏BOSS以及胜利失败页面设计的Android代码,具体内容如下 修改子弹类: public class Bullet { //子弹图片资源 public Bitmap bmpBullet; //子弹的坐标 public int bulletX, bulletY; //子弹的速度 public int speed; //子弹的种类以及常量 public int bulletType; //主角的 public static final int BULLET_PLAYE

  • Android实战打飞机游戏之怪物(敌机)类的实现(4)

    先看看效果图: 分析: 根据敌机类型区分 敌机 运动逻辑 以及绘制 /** * 敌机 * * @author liuml * @time 2016-5-31 下午4:14:59 */ public class Enemy { // 敌机的种类标识 public int type; // 苍蝇 public static final int TYPE_FLY = 1; // 鸭子(从左往右运动) public static final int TYPE_DUCKL = 2; // 鸭子(从右往左运

  • Android实战打飞机游戏之菜单页面设计(1)

    本文目标实现控制小飞机的左右移动.躲避子弹.打boss. 本节实现 开始菜单界面 1.首先 资源文件拷过来 2.划分游戏状态 public static final int GAME_MENU = 0;// 游戏菜单 public static final int GAMEING = 1;// 游戏中 public static final int GAME_WIN = 2;// 游戏胜利 public static final int GAME_LOST = 3;// 游戏失败 public

  • Android实战打飞机游戏之无限循环的背景图(2)

    首先分析下游戏界面内的元素: 无限滚动的背景图, 可以操作的主角,主角的子弹, 主角的血量,两种怪物(敌机),一个boss, boss的爆炸效果. 先看效果图 1.首先实现无限滚动的背景图 原理: 定义两个位图对象 当第一个位图到末尾是 第二个位图从第一个位图的末尾跟上. public class GameBg { // 游戏背景的图片资源 // 为了循环播放,这里定义两个位图对象, // 其资源引用的是同一张图片 private Bitmap bmpBackGround1; private B

  • Android实战打飞机游戏之实现主角以及主角相关元素(3)

    先看效果图 新建player 类 public class Player { private int playerHp = 3; private Bitmap bmpPlayerHP; // 主角坐标以及位图 private int x, y; private Bitmap bmpPlayer; // 主角移动速度 private int speed = 5; // 主角移动标识 private boolean isUp, isDown, isLeft, isRight; // 主角的构造函数

  • Docker容器搭建android编译环境的实践记录

    目录 1 部署容器 1.1 手动部署 1.1.1 配置docker 1.1.2 启动容器 1.1.3 配置环境 1.2 Dockerfile 2 镜像管理 3 容器管理 3.1 每个用户各用容器 3.1.1 服务端配置 3.1.2 客户端使用 3.2 多用户共用容器 3.2.1 服务端配置 3.2.2 客户端使用 1 部署容器 1.1 手动部署 1.1.1 配置docker # 安装之前必须修改docker路径,防止docker空间增长暴满. sudo ln -s /opt/docker /va

  • Android实现九宫格拼图游戏

    经常有同学问到,使用Android能不能开发游戏呢?能开发那些游戏呢?由于操作系统和开发语言局限,一般开发安卓手机游戏,我们很少使用其自带语言开发.而是使用指定编译器和语言完成,能够使界面更流畅,用户体验感更好.但是对于一些常见小游戏,使用JAVA语言开发运行,还是不在话下的,那在本篇博客中,我将给大家简单介绍一下,九宫格拼图游戏的开发过程,基本逻辑和思路我将在代码的注释中体现. 九宫格拼图游戏,相信大家小时候都玩过.大概逻辑是,将1张图采用3*3的方式,分成9部分,将第3行3列的小图取出,打乱

  • 使用Docker容器搭建MySql主从复制

    1. 编写主MySQL的Docker文件 新建文件夹,命名为MySQL-master-v1.在文件夹mysql-master-v1中新建文件Dockerfile和master.cnf.笔者推荐使用的编辑器是Visual Studio Code.利用编辑器将这两个文件的编码设置成UTF-8.因为本文介绍安装到Linux系统下,所以笔者建议读者把换行符设置成LF,以兼顾Linux操作系统.按照如下内容编写这两个文件. Dockerfile FROM mysql:5.7 # set timezone

随机推荐