首页天道酬勤Android实战之Cocos游戏容器如何搭建

Android实战之Cocos游戏容器如何搭建

admin 10-20 21:17 316次浏览
这篇文章主要介绍“Android实战之Cocos游戏容器如何搭建”,在日常操作中,相信很多人在Android实战之Cocos游戏容器如何搭建问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android实战之Cocos游戏容器如何搭建”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    准备工作

    • 安装最新版本CocosDashboard

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

    Android实战之Cocos游戏容器如何搭建

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

    Android实战之Cocos游戏容器如何搭建

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

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

    Android实战之Cocos游戏容器如何搭建

    构建cocos游戏.so文件

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

    Android实战之Cocos游戏容器如何搭建

    • 成功后,用Android Studio打开文件夹里生成的proj项目,并运行该项目到手机上,这里游戏资源加载的是proj同级目录assets,后续,我们会将assets压缩包zip存放在我们服务器,达到用户下载解压后加载启动游戏的目的。

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

    Android实战之Cocos游戏容器如何搭建

    • ./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"/

    到此,关于“Android实战之Cocos游戏容器如何搭建”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注花开半夏网站,小编会继续努力为大家带来更多实用的文章!

    Android实战之Cocos游戏容器如何搭建
    k8s查看pod日志的几种实用方法汇总 从docker镜像里提取dockerfile的两种方法
    相关内容