メインコンテンツまでスキップ

Native対応

最終更新 2026/10/02

1. iOS Native対応​

iOSプロジェクトを初めてビルドすると、./build/ios/と./native/engine/ios/の2つのディレクトリにプロジェクトのコードが生成されます。その後、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による設定方法に対応していないため、手動で設定する必要があります。

2. 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'])
}

3. 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はHarmonyOSに対応した最初のバージョンで、インタラクションはworkerスレッドで行われます。現時点ではcontextを取得する公式のAPIがないため、今後の公式アップデートを待つ必要があります。現時点では、自分で手動で追加することで対応できます

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メソッドを自分で変更することもできます

4. Native対応の有効化​

SDKの初期化時に、configにenableNative: trueを追加すると、Native対応が有効になります。

// TA SDKの設定オブジェクト
var config = {
appId: "YOUR_APPID", // プロジェクトのAPP ID
serverUrl: "YOUR_SERVER_URL", // 送信先URL
enableNative: true,// Nativeコードの呼び出しを許可
autoTrack: {
appShow: true, // 起動イベントを自動収集
appHide: true, // 終了イベントを自動収集
appCrash: true, // クラッシュイベントを自動収集(nativeでのみ有効)
appInstall: true // インストールイベントを自動収集(nativeでのみ有効)
}
};
// 初期化
TDAnalytics.init(config);
このページは役に立ちましたか?