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 直接运行测试

相关推荐
alexhilton7 小时前
Room Fts4:全文搜索替代 SQL LIKE
android·kotlin·android jetpack
hai_android12 小时前
把 Android App 打包成系统应用(System App)
android·kotlin·android jetpack
JMchen13 小时前
【Jetpack 内核实战 01】开篇:Jetpack 组件全家桶核心逻辑与专栏完整规划
android·kotlin·android jetpack
骑着蜗牛撵大象32715 小时前
Linux 进程间通信之管道:从 pipe() 的内核语义到 FIFO 落地排错
android·java·linux·系统编程·fifo·管道·进程间通信
hunterandroid15 小时前
Retrofit 网络请求的异常处理与重试策略实战
android
sejinan16 小时前
极致轻量与秒级起播:NativeWasmTv 开源硬核技术解析与升级版体验
android·开源·webview·tv
小羊没烦恼!16 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
mmsx16 小时前
Android 静默失败实录:五个没有日志的线上事故
android·kotlin
hai_android17 小时前
从零实现一个支持跨进程(IPC)的自定义 Toast
android·kotlin·android jetpack
龙腾-虎跃17 小时前
基于 SIP 协议的自研电话终端:FreeSWITCH 语音与视频通信实战
android·音视频·freeswitch·sip协议终端·wertc