软件开发教程 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试
游戏开发 网络协议 系统运维 HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程
C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
 
   -> 移动开发 -> Android实战——Cocos游戏容器搭建篇 -> 正文阅读

[移动开发]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,方便使用者调用


完结,撒花🎉

  移动开发 最新文章
Android开发中recycleview子项宽度无法撑满
2021-07-24
【Kotlin】kotlin中的空指针检查
多种网络请求方式 ,这么骚气的操作确定不来
营销运作百科:什么是小程序,小程序的发展
Android - 禁用权限后,进程被杀?
Flutter WebView使用以及分析
Android 播放帧动画2
[android驱动] Ftrace使用记录
Unity(C#)和Android(java)通过反射相互调用
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 11:02:31  更:2021-07-14 11:02:48 
 
360图书馆 购物 三丰科技 阅读网 日历 万年历 2021年7日历 -2021/7/27 3:09:19-
图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件开发教程