cocoscreator jni快速使用完整示例

cocosCreator打包安卓后调用cpp跑通全流程 cocosCreator打包安卓后调用c++的cpp跑通全流程 阅读详情

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就可以了

【Cocos2dx】如何将CocosCreator构建发布的Android平台工程整合到已有的Android项目中 文章目录一,前言二,教程1. CocosCreator构建发布2. 导入libcocos2dx3.修改gradle配置3.复制jni文件夹4. 复制Activity5.编译运行6.出现的bug 一,前言 CocosCreator可以将开发的游戏发布到Android平台,使用Android Studio可以构建和运行编译目录下(frameworks\runtime-src\proj.android-studio)的工程。但其生成的工程比较复杂,当我们需要从一个已有的Android项目启动我们开发出的游戏时,整 阅读详情

相关推荐

Cocos2d-x与Android利用JNI相互调用

Cocos与Android利用JNI相互调用

sgn132的专栏 4560

cocos中的JNI调用

1.C++层调用Java: 使用jni文件夹下面JniHelper类的getStaticMethodInfo、getMethodInfo获取java层的函数。(具体实现函数实现可知) 2.java层调用C++层: java层声明native函数,这个函数由Jni(C++)层实现,java层是如何通过native函数找到C++层的函数的? 需要把C++这些函数要注册到jni中,jni方法注册...

u012861978的专栏 453

CocosCreator 3.x 截图裁剪与跨平台保存实战指南

在游戏开发中,离屏渲染技术是实现高级图形功能的核心原理之一,它允许开发者将特定场景或UI元素渲染到纹理而非屏幕,为后续处理提供数据基础。这项技术的核心价值在于实现了对渲染内容的精准控制和高效复用,广泛应用于游戏截图、动态贴图生成、后期处理等场景。通过RenderTexture,开发者可以捕获游戏中的任意节点,并结合相机视口控制实现高性能的“矢量裁剪”,避免不必要的像素处理开销。在跨平台实践中,尤其是在iOS和Android设备上,将纹理数据通过jsb桥接传递给原生端进行编码和保存,是兼顾性能与稳定性的关键。

weixin_29967445的博客 250

cocos2d-x开发中jni相关记录

使用加载的uijson文件中的按钮时,在按钮的响应函数里面删除掉(this-&gt;removeFromParent();)ui所在的层时,发生崩溃。解决办法:修改UIWidget.cpp文件中releaseUpEvent函数,如图:   1、在cocos2d-x的安卓java代码中调用c++的方法:     第一,首先在项目下-&gt;src-&gt;包名,右键-&gt;New-&gt...

百里杨的博客 354

CocosCreator 2.4.3安卓APK打包与广告SDK集成实战指南

在移动游戏开发中,APK打包与广告集成是游戏上线前必须掌握的核心技术环节。APK(Android Package)是安卓应用的安装包格式,其打包过程涉及代码编译、资源整合与签名验证。其原理在于通过构建工具链(如Gradle、NDK)将游戏引擎代码、平台层代码及业务逻辑整合为可在安卓设备上运行的二进制包。这一过程的技术价值在于打通了从开发到分发的关键路径,是实现游戏商业化变现的基础。在应用场景上,尤其对于使用CocosCreator等跨平台引擎的休闲游戏开发者,高效、稳定的打包流程与广告SDK(如穿山甲、优量

weixin_29013129的博客 329

CocosCreator安卓打包必备NDK配置与实战指南

static {// 加载 libnative-lib.so注意:会自动查找名为的文件,前缀lib和后缀.so由系统补全。Java端声明接口:static {C++端实现:extern "C"当你学会用NDK解决问题时,你就不再只是一个“写JS的游戏开发者”,而是真正掌握了全栈能力的工程师。你会发现:- 性能优化不再是玄学,而是可测量、可改进的过程;- 安全防护有了抓手,不再惧怕外挂泛滥;

weixin_36444661的博客 1122

cocos2d-x中通过jni调用android方法

最近的一个cocos项目有使用到JNI,结果又是通过百度来查找使用方法,为了方便以后查看,在这里小结一下,应该会比较适合初次使用Jni的小伙伴们:) JNI是Java Native Interface的缩写,中文为Java本地调,是Java语言提供的一种通用接口,用于Java代码与本地化代码的交互。 所谓本地化代码(Native Code)是指已被编译为特定于处理器的二进制

活在阳光下 753

Cocos & Android Jni交互基础

Cocos移动端开发时不免会遇到和android通信的部分,Java和C的通信不可避免,于是做了文档引导,新手向

cocos2d-x 通过JNI实现c/c++和Android的java层函数交互

cocos2d-x 通过JNI实现c/c++和Android的java层函数交互 1.JNI JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的

兴趣是最好的老师 659

Qt C++:跨平台开发利器

摘要: Qt C++是基于C++的跨平台开发框架,通过元对象系统、信号槽机制及模块化架构实现"一次编写,多端部署"。核心特性包括: 跨平台能力:覆盖桌面(Windows/macOS/Linux)、移动端(iOS/Android)、嵌入式及WebAssembly; 信号与槽:替代传统回调,实现对象间高效通信; UI组件库:200+预制组件支持QSS样式定制; 工具链:Qt Creator集成开发环境提供可视化设计、调试及多平台编译。 广泛应用于工业控制、车载系统、医疗设备及跨平台应用开发,

2202_75382767的博客 1681

机器学习面试笔试求职必背!八股文(1/5)

算法工程师,技术软件类求职机器学习必背八股文 更多算法/业务/HR面等笔试题面试题 —— >个性签名自取! 1. 特征工程: 1.1 为什么要对特征做归一化处理: Feature scaling,常见的提法有“特征归一化”、“标准化”,是数据预处理中的重要技术。特征间的单位(尺度)可能不同,比如身高和体重,比如摄氏度和华氏度,比如房屋面积和房间数,一个特征的变化范围可能是[ 1000 , 10000 ] [1000, 10000][1000,10000],另一个特征的变化范围可能是[ −.

大厂offer宝典 1万+

CocosCreator3.8源码分析

3.1 V8的API定义了几个基本概念:句柄(handle)、作用域(scope)、上下文环境(Context)、模板(Templates)。上下文环境Context就是脚本的运行环境,JavaScript的变量、函数等都存在于上下文环境Context中。Context可以嵌套,即当前函数有一个Context,调用其它函数时如果又有一个Context,则在被调用的函数中javascript是以最近的Context为准的,当退出这个函数时,又恢复到了原来的Context。

破竹的博客 3973

HFSS15 win10_64位破解

HFSS15 win10_64位破解 找到的别人的软件,但在首次安装时失败了,并不能patched。寻找了几种方法,已成功安装。在此写下安装经验,供大家参考。 软件安装包以及破解软件: 链接:https://pan.baidu.com/s/1MMjV_31maU5QD6fmI4zfIA 提取码:yj4q 在安装之前,建议关闭杀毒软件。 Step1:进入HFSS150Win64安装包,点击au...

玉笙寒 4万+

Android原生应用集成CocosCreator游戏:环境配置、通信与性能优化实战

在移动应用开发中,混合开发模式因其能融合原生应用稳定性和跨平台内容灵活性而备受青睐。其核心原理在于通过桥接技术,实现不同运行时环境(如原生Java/Kotlin与JavaScript引擎)间的通信与资源共享。这种技术方案的价值在于,它允许开发者在现有App中无缝嵌入游戏或交互式内容模块,无需用户单独下载,从而提升用户粘性并实现功能的动态更新。典型的应用场景包括电商App内嵌促销小游戏、社交平台集成轻量级互动应用等。本文聚焦于将CocosCreator开发的游戏项目集成到Android原生工程这一具体实践,详

weixin_30911451的博客 346

台达PLC DIAdesigner-AX 编程笔记

1、登陆台达思图软件网站,选择Download,登陆注册好的账号,下载DIAInstaller,下载后安装(安装目录不要修改);

weixin_45823621的博客 6675

RAG项目简历包装指南:从“流水线工人”到“问题解决者”的跃迁(附代码与思路)

本文代码已在Python 3.11 + CUDA 12.3环境测试,部分功能需LangChain 0.2+支持。

Conan_0728的博客 1885

COCOSCREATOR在ANDROID和IOS双平台的双向调用

如果只有一个参数的话,该方法应该修改为“testWitParam1:”或者"test1:",都可以,主要可以理解为有一个参数就要有一个“:”。+(instancetype)shareSingleTon的静态方法:该方法把类设计为单例,让我们把调用-开头的方法(成员函数)。1、在以上代码中调用到的原生方法,不管iOS或Android端,都是要写静态方法,这个在写原生端功能的时候再详细说明。2、在iOS端,要调用“testWithParam1:andParm2:”这个方法,该方法最后还有一个“:”;

我的专栏 945

Element-UI全面入门与实战技巧

Element-UI 是一套基于 Vue 2.0 的桌面端组件库,由饿了么前端团队开发并维护。它提供了一系列丰富的 UI 组件,旨在帮助开发者快速构建高效、美观的 Vue 应用程序。Element-UI 是一款遵循 Ant Design 设计规范的 Vue UI 库,它涵盖了从按钮、输入框、选择器到表格、标签、进度条等众多常用的界面元素。Element-UI 的组件不仅功能全面,而且易于定制,使得开发者可以快速实现个性化的页面设计。Element-UI 的特点包括:在使用 Element-UI 之前,需要确

全世界的博客 2863

cocos2dx JNI java C++ 相互调用示例

前段时间搞jni,需要java和c++交互。 搜索了很多贴,要不就是不能运行,要不就像某位名人的blog一样自由函数,从来不发代码。直到找到这位哥们的贴,既详细,代码又简单易懂。:http://acoder.me/cocos2d-x-cocos-and-java-chat.html 感谢他,搬运一下希望更多人收益。 代码备份一下:http://download.youkuaiyun.com/de

1325

Python3实现基于ARIMA模型来预测茅台股票价格趋势

ARIMA(Autoregressive Integrated Moving Average)模型是一种广泛使用的时间序列分析方法,它可以用于对未来的数据进行预测。ARIMA模型由自回归模型(AR模型)、差分整合模型(I模型)和移动平均模型(MA模型)组成,因此也被称为ARIMA(p,d,q)模型。其中,p表示自回归阶数,d表示差分阶数,q表示移动平均阶数。具体来说,ARIMA模型可以通过以下步骤进行建模:数据预处理:对时间序列进行平稳性检验,如果不满足平稳性,则进行差分操作。

m0_64336780的博客 2万+

IoT安全软件:Forescout二次开发_Forescout基础架构与原理

Forescout平台是一个集成了多种安全功能的综合解决方案,旨在帮助组织管理和保护其网络中的IoT设备。该平台通过自动发现、分类和监控网络中的设备,提供实时的安全可见性和控制。Forescout的核心优势在于其能够处理混合环境中的各种设备,包括传统IT设备、IoT设备和OT设备。Forescout平台由多个核心组件组成,每个组件负责特定的功能。了解这些组件的运作机制是进行二次开发的基础。假设我们需要定义一个策略,禁止所有厂商为XYZ的设备访问互联网。选择策略类型。

chenlz2007的博客 1965

CocosCreator在Android和iOS双平台的双向调用

由于感觉Cocos官方的文档写得有点不尽人意,所以在这里总结一下自己的经验。 一、下面先写好CocosCreator调用原生端(iOS和Android): CocosCreator代码: 我们新建一个javascript文件,命名为:CallNative.js。 /** 调用原生方法类 */ window.test = window.test || {}; (funct...

大猪的博客 3904

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

CocosCreator的踩坑之旅

重新安装显卡驱动 参考: http://forum.cocos.com/t/cocos-creator/35693/8 http://www.cocoachina.com/bbs/read.php?tid-457588.html

doom20082004的博客 5068

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

安卓iOS原生应用嵌入CocosCreator

Cocos Creator支持导出为原生项目,比如Android Studio项目或者Xcode项目。这时候,用户需要将导出的项目作为库或模块集成到他们的原生应用中。可能需要使用到Android的Activity或者iOS的UIViewController来承载Cocos的视图。然后,我应该考虑具体步骤。对于Android,用户可能需要将Cocos导出的代码作为库模块导入,然后在MainActivity中启动Cocos的Activity,或者将Cocos的SurfaceView添加到现有的布局中。

lcfengokok的博客 1931

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

CocosCreator之KUOKUO带你搞反射-简单的安卓交互

摘要 在使用 CocosCreator 打包的原生应用中,我们可以通过引擎封装好的反射机制调用 Java 的静态方法,从而实现提示、相册、支付跳转等功能。本次内容为环境介绍与简单的交互。 正文 先看效果 版本说明 CocosCreator 为 2.2.1 版本。 AndroidStudio 为 3.5.2 版本。 JDK 为 13 版本。(具体:13.0.1) NDK 为 20 版本。(具体...

kuokuo666的博客 1811

CocosCreator 游戏接入SDK 注意事项

1. 在Android层 接入SDK, 我们通过SDK接收数据,都在UI线程,如果我们直接 调用 Cocos2dxJavascriptJavaBridge -> js, 或者 jni -> cpp 如果操作改变了GL线程的渲染(绘制) 就会崩掉,我们需要在GL线程中去调用对应的函数 android:在run中写逻辑 self.runOnGLThread(new Ru...

.Vergil 技术博客 2399
上一篇: pyqt5 弹出文件选择框和目录框
下一篇: cocoscreator 浏览器调试技巧
springleaf3000
博客等级 码龄14年 13粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值