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

相关推荐
奶油话梅糖24 分钟前
苹果的内核跑上了安卓手机:2,631 Star 的 HakiOS 让 XNU 在 Adreno GPU 上画出 118 帧
android·macos·智能手机
恋猫de小郭31 分钟前
Flutter THLC 的 WebView 滚动终于从 70 FPS 提升到 120 FPS
android·前端·flutter
好的佩奇12 小时前
Dart 之扩展类型
android·flutter·dart
alexhilton14 小时前
2027 Android 开发者路线图:学习、面试与 AI
android·kotlin·android jetpack
灿飞屋15 小时前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
疯华整猫17 小时前
我用 Trae 把 Android 内存账重算了一遍
android·性能优化·源码
TimeFine18 小时前
AI 编程工作流的设计:从人工判断到 AI裁判
android·ai编程
阿杰m18 小时前
Android源码第四章:Android 系统启动——App 的第一行代码从哪来?
android
疯华整猫1 天前
混淆起初根本不是为了防破解:我用 Trae 把 Android 混淆这二十来年重跑了一遍
android·人工智能·计算机视觉
Carson带你学Android1 天前
AI时代,你的 App 会被 Agent 这三种方式调用
android·ai编程