跳到主要内容

Native支持

最近更新 2026/10/02

一、iOS Native 支持​

首次构建 iOS 项目会生成工程代码到 ./build/ios/ 和 ./native/engine/ios/ 两个目录,然后开始配置 iOS 工程。

1.1 手动配置​

  • 添加 iOS 工程依赖文件

    • CocosCreatorProxyApi.h
    • CocosCreatorProxyApi.mm
    • ThinkingSDK.framework
    • ThinkingDataCore.framework
  • Build Phases 设置

    • Link Binary With Libraries 添加 ThinkingSDK.framework
  • Build Settings 设置

    • Framework Search Paths 添加 ThinkingSDK.framework的引用路径,如"$(SRCROOT)/../Classes"
    • Other Linker Flags 添加 -ObjC

1.2 CMakeList 配置​

提示:

CMakeList 文件路径为 ./native/engine/ios/CMakeLists.txt;

首次构建 iOS 项目之后会生成 CMakeList 文件,配置好之后再次构建时生效;

需要先把 iOS 资源文件拷贝到对应文件夹,如 ./native/engine/common/Classes/ThinkingAnalytics/ios/ ,配置 CMakeList 时填写对应路径即可。

  • 添加 iOS 工程依赖文件
# 找到这行代码
set(PROJ_COMMON_SOURCES
${CMAKE_CURRENT_LIST_DIR}/../common/Classes/Game.h
${CMAKE_CURRENT_LIST_DIR}/../common/Classes/Game.cpp
# 添加以下代码
${CMAKE_CURRENT_LIST_DIR}/../common/Classes/ThinkingAnalytics/ios/CocosCreatorProxyApi.h
${CMAKE_CURRENT_LIST_DIR}/../common/Classes/ThinkingAnalytics/ios/CocosCreatorProxyApi.mm
${CMAKE_CURRENT_LIST_DIR}/../common/Classes/ThinkingAnalytics/ios/ThinkingSDK.framework
${CMAKE_CURRENT_LIST_DIR}/../common/Classes/ThinkingAnalytics/ios/ThinkingDataCore.framework
)
  • Build Phases 设置
# 找到这行代码
target_link_libraries(${LIB_NAME} cocos2d)
# 添加以下代码
target_link_libraries(${LIB_NAME} ${CMAKE_CURRENT_LIST_DIR}/../common/Classes/ThinkingAnalytics/ios/ThinkingSDK.framework)
target_link_libraries(${LIB_NAME} ${CMAKE_CURRENT_LIST_DIR}/../common/Classes/ThinkingAnalytics/ios/ThinkingDataCore.framework)
  • Build Settings 设置
# 找到这行代码
set(PRODUCT_NAME ${APP_NAME})
# 添加以下代码
set(CMAKE_EXE_LINKER_FLAGS -ObjC)
注意

Cocos Creator v2.x 的编辑器暂不支持 CMake 配置方式,需要手动配置。

二、 Android Native 支持​

构建 Android 项目工程, 配置 Android 工程。

  • 在 Android 显示模式的 app 工程中,把依赖文件 CocosCreatorProxyApi.java 加入到 com.cocos.game 中,如下图
  • 在项目的 app 文件夹中的 proguard-rules.pro 文件中,添加混淆
-keep public class com.cocos.game.CocosCreatorProxyApi {*;}
  • 在项目的 app 文件夹中新建 libs 目录,将 TDAnalytics.aar、TDCore.aar 拷贝到其中
  • 在 Module 下的 build.gradle 文件中添加依赖项
dependencies {
...
implementation fileTree(dir: 'libs', include: ['*.aar'])
}

三、 OpenHarmony Native 支持​

首先构建OpenHarmony工程

  • 将TDAnalytics.har和CocosCreatorProxyApi.ts放到下面的目录中
  • 在 entry/oh-package.json5 文件中引入SDK
"@thinkingdata/analytics": "file:./libs/TDAnalytics.har"
  • 在 entry/build-profile.json5 中引入桥接文件
arkOptions: {
runtimeOnly: {
sources: [
'./src/main/ets/CocosCreatorProxyApi.ts',
],
},
}
  • 引入context

目前CocosCreator支持鸿蒙的第一个版本,交互是在 worker 线程,暂时没有官方的api获取context,后续等官方更新,目前可以通过自己手动添加

在 entry/src/main/ets/pages/index.ets 的 aboutToAppear() 中加入:

aboutToAppear(): void {
console.log('[LIFECYCLE-Index] cocos aboutToAppear');
this.workPort.postMessage('context', getContext(this));
...
}

在 entry/src/main/ets/workers/cocos_worker.ts 的消息 switch 中加入 context 分支:

switch (msg.name) {
...
case "context":
globalThis.appContext = msg.param
break;
default:
console.error("cocos worker: message type unknown");
break;
}

上面的操作是将context传递到 worker 线程中,然后在SDK初始化的时候需要用

在 CocosCreatorProxyApi.ts 的 initWithConfig 中,初始化时传入 globalThis.appContext:

function initWithConfig(param: string): void {
try {
let obj = JSON.parse(param)
if (obj['enableLog'] === true) {
TDAnalytics.enableLog(true)
}
let config = new TDConfig()
config.appId = obj['appId']
config.serverUrl = obj['serverUrl']
TDAnalytics.initWithConfig(globalThis.appContext, config)
} catch (e) {
}
}

如果有其他的方式去获取context,也可以自己修改CocosCreatorProxyApi.ts文件中的initWithConfig方法

四、 开启 Native 支持​

初始化 SDK 时,在 config 中加入 enableNative: true,即可开启 Native 支持。

// TA SDK 配置对象
var config = {
appId: "YOUR_APPID", // 项目 APP ID
serverUrl: "YOUR_SERVER_URL", // 上报地址
enableNative: true,// 允许调用 Native 代码
autoTrack: {
appShow: true, // 自动采集 启动事件
appHide: true, // 自动采集 关闭事件
appCrash: true, // 自动采集 崩溃事件(仅 native 生效)
appInstall: true // 自动采集 安装事件(仅 native 生效)
}
};
// 初始化
TDAnalytics.init(config);
这篇文档对你有帮助吗?