cocos联调注意事项-安卓

一:交互代码示例:

1.游戏调用安卓代码样例:

由于cocos只能调用静态方法,所有sdk方法已经封装SDKHelper类里,反射调用SDKHelper即可,方法名与文档一致

const CLASS = 'com/xy/fusiontsjl/SDKHelper'; // 注意是 / 不是 . ,不带 .java

function callStatic(method: string, sig: string, ...args: any\[\]) {

if (sys.isNative && sys.platform === sys.Platform.ANDROID && jsb.reflection) {

jsb.reflection.callStaticMethod(CLASS, method, sig, ...args);

} else {

console.warn('SdkBridge 非 Android 原生环境,跳过', method);

}

}

1.1无参数时

export const sdkLogin = () => callStatic('SDKLogin', '()V');

1.2 有参数时

export const sdkPay = (json: string) => callStatic('SDKPay', '(Ljava/lang/String;)V', json);

2.安卓 回调 游戏代码样例:

复制代码

### Cocos 回调约定 SDK 在原生侧产生回调后,会将结果透传给 Cocos 游戏层统一回调入口: `window.GameSdkCallback(methodName, data)` 其中: - `methodName` 为回调事件名 - `data` 为回调附带的数据字符串,通常为 JSON 字符串 游戏侧需要在脚本初始化阶段注册该全局方法,用于统一接收 SDK 回调。 原生侧在调用前会先判断该方法是否存在;若未注册,则本次回调会被忽略,不会抛出脚本错误。

例:写在com.cocos.game.AppActivity里

public void sendCallback(String methodName, String data) {

final String script = "window.GameSdkCallback&&window.GameSdkCallback("

  • JSONObject.quote(methodName) + "," + JSONObject.quote(data == null ? "" : data) + ");";

CocosHelper.runOnGameThread(() -> CocosJavascriptJavaBridge.evalString(script));

}

回调方法methodName声明与文档中一致,demo里在下图:

二:编译aar注意事项

1、谷歌要求最新提审包targeVersion设置为36

2、将游戏项目导出为安卓工程

3、所有接入sdk代码已接入完毕,无需再接入第二次:

cocos游戏入口文件:com.cocos.game.AppActivity(在app层)

4、cocos注意事项

4.1 导出完成后,用androidStudio打开项目build->android->proj

4.2 谷歌要求升级targret到36,下方这里需修改为:https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip

下方这里classpath 'com.android.tools.build:gradle:8.10.0'

这里改为compileOnly

下方这里修改为36

删掉下方下AndroidManifest里标签intent-filter部分,

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

修改下方为apply plugin: 'com.android.library',注释 apply plugin: 'com.android.application'

注释掉 shrinkResources true

4.4 在AppActivity文件里添加回调方法sendCallback,可以参考demo里的GameMainActivity,直接copy,把注释的部分打开,修改完备份一下AppActivity文件,下次导出工程时替换这个文件。

5、生成aar:

打开 Settings→ Experimental

确认勾选:Configure all Gradle tasks during Gradle Sync (this can make Gradle Sync slower)

改完点下方红色按钮编译一下才会生效

点击下图红色按钮编译aar

cocos生成aar:

cocos需要生成三个aar,点击这三个库下的assemble按钮

三个aar在下方的build->outputs->aar目录下

6、demo调试

6.1 将生成的aar文件放入demo的app目录下libs文件夹,然后编译一下

6.2 把MainActivity继承类改为游戏入口文件,cocos是AppActivity

6.3 直接运行测试

相关推荐
TDengine (老段)1 小时前
TDengine TSDB 实战排障四(升级与兼容)
android·java·大数据·数据库·物联网·时序数据库·tdengine
蓝速科技2 小时前
政务自助终端信创选型与无人值守落地方案
android·大数据·数据库·人工智能·科技·技术分享·政务
硫酸锌013 小时前
在手机上运行Python增量备份手机数据到PC电脑
android·windows·python
hai_android4 小时前
子 View 被压小时,如何向父容器"告状"?——MEASURED_STATE_TOO_SMALL 向上传递机制
android·kotlin·android jetpack
AFinalStone4 小时前
Android 7 多用户源码解析(七)系统服务的多用户感知处理
android·系统架构·多用户
怪奇云呼军4 小时前
从 ElevenLabs 看工具调用:闪电智能 Voice Agent 的企业集成验收设计
android·大数据·运维·服务器·网络·人工智能·kotlin
157092511345 小时前
Android 架构模式详解:从 MVC、MVP 到 MVVM
android·架构·mvc
aaajj6 小时前
Android手机连接鼠标情况
android
其实防守也摸鱼7 小时前
SQL注入实验笔记
android·运维·数据库·安全·oracle·自动化