最近接到的一个需求是在我们已有的Android应用中嵌入cocos2d-x开发的小游戏,但是由于网络上关于v4.0版本相关的文章比较少,尤其是实现这种特定的需求更是几乎没有,所以笔者将自己的方法分享出来,以方便他人。

安装cocos

解压缩后进入根目录,先激活python2.7环境,笔者使用的是conda

activate py27

然后

python setup.py

重启CMD生效。

新建游戏

注意要激活python2环境

cocos new EEGameTest -p com.epic.EEGameTest -l cpp -d EEGameTest

下载安装最新版本的cmake 下载

然后在项目根目录 建立一个build-win32目录,构建成vs项目。进入该目录执行

cmake .. -G"Visual Studio 16 2019" -Tv142 -A win32 ..

开发环境

使用VS 打开项目解决方案即可

这里注意: 需要右键将项目设置为启动项目,不然会报错。

编译

cocos compile  -p android -android -m debug

如果提示缺少环境变量 可以使用v4.0目录的 setup.py 更新

整合到Android Studio

添加module

在AS中选择 Import Module,选择cocos2d-x-4.0\cocos\platform\android\java文件夹并添加
引入之后 还需将libcocos2dx添加为项目依赖

在这里插入图片描述

复制 so 文件

编译成功后,将proj.android\app\build\intermediates\cmake\debug\obj中的所有文件移动到目标的AS工程的libs文件夹中

复制assets目录

proj.android\app\build\intermediates\assets\debug目录中的内容复制到AS的assets目录中。

通过System.loadLibrary()方法加载so文件

在MainActivity中 添加

init {
        System.loadLibrary("MyGame");
    }

我这里使用Kotlin开发,如果是使用Java开发的话,要使用static。

static {
        System.loadLibrary("MyGame");
    }
修改AndroidManifest.xml

添加库和新增的CocosActivity

        <meta-data android:name="android.app.lib_name"
            android:value="MyGame" />
        <activity android:name=".activity.CocosActivity"
            android:screenOrientation="landscape"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
添加CocosActivity
public class CocosActivity extends Cocos2dxActivity {
}

注意

  1. 引入libcocos2dx后build可能报错, 这是因为 libcocos2dx的api版本太旧,修改为
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 29
    }
  1. 如果是通过跳转到CocosActivity,需要修改以下代码
    在这里插入图片描述

    将root检查注释掉,不然运行会报错

Logo

这里是一个专注于游戏开发的社区,我们致力于为广大游戏爱好者提供一个良好的学习和交流平台。我们的专区包含了各大流行引擎的技术博文,涵盖了从入门到进阶的各个阶段,无论你是初学者还是资深开发者,都能在这里找到适合自己的内容。除此之外,我们还会不定期举办游戏开发相关的活动,让大家更好地交流互动。加入我们,一起探索游戏开发的奥秘吧!

更多推荐