cocoscreator jni快速使用完整示例

1:使用androidstudio打开对应的cocoscreator安卓工程,创建SDKManager.java文件

package org.cocos2dx.javascript;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;

public class SDKManager {

    static String LOG_TAG = "SDKManager";

    static SDKManager _instance;

    static SDKManager getInstance() {
        if(SDKManager._instance == null) {
            SDKManager._instance = new SDKManager();
        }
        return SDKManager._instance;
    }

//    public void init(Context context) {
    public void init() {

    }

    // native主动调用
    static public String callFromNative() {
        Log.i(LOG_TAG, "callFromNative");

        return SDKManager.getInstance().callNative();
    }

    // native方法
    public native String callNative();

    public void onDestroy() {
    }

    public void onPause() {
    }

}

目录如下:

2:生成native头文件

运行cmd,cd到proj.android-studio\app\src 目录,输入javah -jni org.cocos2dx.javascript.SDKManager生成头文件

 

 3:移动org_cocos2dx_javascript_SDKManager.h文件到instantapp下面的目录,并且新建

org_cocos2dx_javascript_SDKManager.cpp文件

 org_cocos2dx_javascript_SDKManager.cpp内容如下:

//
// Created by Kyz on 2022/1/20.
//


#include "org_cocos2dx_javascript_SDKManager.h"
#include <android/log.h>
#include <string>

using namespace std;

#define LOG_TAG "SDK Native"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)


/*
 * Class:     org_cocos2dx_javascript_SDKManager
 * Method:    callNative
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_org_cocos2dx_javascript_SDKManager_callNative
        (JNIEnv *env, jobject) {
    std::string s = "abc";
    LOGD("native call abc");



    return env->NewStringUTF(s.c_str());
}

4:同目录的main.cpp文件include头文件

5:CocosAndroid.mk文件加入头文件和源文件 

6:js调用java方法,需要在场景调用callJava方法

export function callJava() {

    if(cc.sys.os == cc.sys.OS_ANDROID) {
        let value = jsb.reflection.callStaticMethod("org/cocos2dx/javascript/SDKManager", "callFromNative", "()Ljava/lang/String;")
        console.log("back value is ", value)

        return true
    }

}

 7:最后重新构建工程,在生成apk就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值