编译环境
python2.7(mac自带)

1.安装PyYAML
mac: sudo easy_install pyyaml
win: pip install pyyaml

2.安装Cheetah
下载:http://pythonhosted.org/Cheetah/
进入目录执行
sudo python setup.py install

3.下载NDK,r16b,解压后添加环境变量

vi ~/.bash_profile
export NDK_ROOT=/Users/anger/Downloads/dev/android-ndk-r16b
PATH=$PATH:$NDK_ROOT

或者直接终端执行
export NDK_ROOT=/Users/anger/Downloads/dev/android-ndk-r16b

4./Applications/CocosCreator.app/Resources/是安装目录
在/cocos2d-x/创建custom目录,并创建文件:

// jsbTest.h
#ifndef __JSB_TEST_H__
#define __JSB_TEST_H__
#include "cocos2d.h”
class jsbTest {public: static void testlog();
};
#endif// jsbTest.cpp
#include "jsbTest.h”
USING_NS_CC;
void jsbTest::testlog() {CCLOG("jsbinding succeed! oh yeah!");
}

5.在/cocos2d-x/tools/tojs文件夹下创建jsbTest.ini文件

# 模块名称
[jsbTest]
# 绑定回调函数的前缀,也是生成的自动绑定文件的前缀
prefix = jsbTest
# 绑定的类挂载在 JS 中的哪个对象中,类似命名空间
target_namespace =
# 自动绑定工具基于 Android 编译环境,此处配置 Android 头文件搜索路径
android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.9/include
# 配置 Android 编译参数
android_flags = -D_SIZE_T_DEFINED_
# 配置 clang 头文件搜索路径
clang_headers = -I%(clangllvmdir)s/%(clang_include)s
# 配置 clang 编译参数
clang_flags = -nostdinc -x c++ -std=c++11 -U __SSE__
# 配置引擎的头文件搜索路径
cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/external/sources
# 配置引擎编译参数
cocos_flags = -DANDROID -DCOCOS2D_JAVASCRIPT
# 配置额外的编译参数ok
extra_arguments = %(android_headers)s %(clang_headers)s %(cocos_headers)s %(android_flags)s %(clang_flags)s %(cocos_flags)s %(extra_flags)s
# 需要自动绑定工具解析哪些头文件ok 等待修改
headers = %(cocosdir)s/custom/jsbTest.h
# 在生成的绑定代码中,重命名头文件
replace_headers=
# 需要绑定哪些类,可以使用正则表达式,以空格为间隔
classes = jsbTest.*
# 哪些类需要在 JS 层通过 cc.Class.extend,以空格为间隔
classes_need_extend =
# 需要为哪些类绑定属性,以逗号为间隔
field =
# 需要忽略绑定哪些类,以逗号为间隔
skip =
# 重命名函数,以逗号为间隔
rename_functions =
# 重命名类,以逗号为间隔
rename_classes =
# 配置哪些类不需要搜索其父类
classes_have_no_parents =
# 配置哪些父类需要被忽略
base_classes_to_skip =
# 配置哪些类是抽象类,抽象类没有构造函数,即在 js 层无法通过 var a = new SomeClass();的方式构造 JS 对象
abstract_classes =
# 配置哪些类是始终以一个实例的方式存在的,游戏运行过程中不会被销毁
persistent_classes =
# 配置哪些类是需要由 CPP 对象来控制 JS 对象生命周期的,未配置的类,默认采用 JS 控制 CPP 对象生命周期
classes_owned_by_cpp =
remove_prefix=
script_control_cpp = no

6.复制一份genbindings.py 重命名为jsbTest.py
找到cmd_args = 修改为

cmd_args = { 'jsbTest.ini' : ('jsbTest', 'jsb_jsbTest_custom'), }

6.终端进入tojs目录
cd /Applications/CocosCreator.app/Contents/Resources/cocos2d-x/tools/tojs
执行jsbTest.py
直到出现 Generating javascript bindings succeeds.
成功,在cocos2d-x/cocos/scripting/js-bindings/auto里面生成了jsb_jsbTest_custom.hpp和jsb_jsbTest_custom.cpp

7.打开ios_mac工程
/cocos2d-x/cocos/scripting/js-bindings/proj.ios_mac
选择auto右键,添加文件
把/cocos2d-x/cocos/scripting/js-bindings/auto里的文件
jsb_jsbTest_custom.hpp和jsb_jsbTest_custom.cpp添加到auto下

把/cocos2d-x/custom的文件添加到工程下

打开jsb_jsbTest_custom.cpp,修改引用路径 #include “custom/jsbTest.h”,这里报红色错误

8.打开/cocos2d-x/cocos/scripting/js-bindings/manual/
jsb_module_register.cpp

找到
/#include “cocos/scripting/js-bindings/auto/jsb_cocos2dx_network_auto.hpp”
/#include “cocos/scripting/js-bindings/auto/jsb_creator_auto.hpp”
// 添加下面这行代码
/#include “cocos/scripting/js-bindings/auto/jsb_jsbTest_custom.hpp”

找到
se->addRegisterCallback(register_all_cocos2dx_extension);
se->addRegisterCallback(register_all_cocos2dx_extension_manual);
// 添加下面这行代码
se->addRegisterCallback(register_all_jsbTest);

9.打开cocos2d-x/templates/cocos2dx_files.json,搜索/auto/
找到
“cocos/scripting/js-bindings/auto/api/jsb_creator_physics_auto_api.js”,
// 添加下面代码
“cocos/scripting/js-bindings/auto/api/jsb_jsbTest_auto_api.js”,
“cocos/scripting/js-bindings/auto/api/jsb_jsbTest_auto.cpp”,
“cocos/scripting/js-bindings/auto/api/jsb_jsbTest_auto.hpp”,

10.创建helloWord工程,添加代码:

onLoad: function() {
if(cc.sys.isNative){
jsbTest.log();
}
}

构建发布ios,把jsbTest.cpp,jsbTest.h复制到导出的项目的Classes目录,xcode添加编译

Cocos Creator JSB绑定 MAC系统环境相关推荐

  1. java中JSB_深入解析Cocos Creator JSB绑定原理以及应用实践

    背景 一直以来,ABCmouse 项目中的整体 JS/Native 通信调用结构都是基于 callStaticMethod evalString 的方式.通过 callStaticMethod 方法我 ...

  2. Cocos Creator JSB绑定

    至于绑定所需要的环境,自己百度,文章最后提供部分环境依赖 D:\CocosCreator 为Cocos Creator安装目录 在D:\CocosCreator\resources\cocos2d-x ...

  3. Cocos Creator JSB [Lv.1] (1)

    目录 摘要 系列文章 JSB能做什么 环境 资源 准备工作 正式开始 对工程做一些修改 如何互动 小姐姐现身 与小姐姐互动的桥梁 找到小姐姐 划重点 摘要 本系列文章主要实操JSB的手动绑定,在官方教 ...

  4. Cocos Creator JSB [Lv.1] (3)

    目录 摘要 系列文章 正式开始 准备礼物 怎么送 送礼物 seval_to_Gift 最终效果 在 Android 平台测试 划重点 摘要 承接上文 Cocos Creator JSB [Lv.1] ...

  5. Cocos Creator jsb手动绑定C++

    使用的是cocos creator 2.4.3版本:直接贴代码,结构如下: 在CocosDashboard\resources.editors\Creator\2.4.3\resources\coco ...

  6. Cocos Creator JSB [Lv.2] TODO

    目录 摘要 环境 资源 并未正式开始 思路 问题 参考 摘要 本文本来是想介绍JSB自动绑定,但在为自动绑定工具搭建运行环境时,发现对运行环境的要求有些苛刻.python,yaml,cheetah都需 ...

  7. Cocos Creator JSB [Lv.3]

    目录 摘要 资源 正式开始 为什么要使用`JSB` `JSB`能做什么 进行`JSB`绑定需要做什么 构建工程 创建类 绑定(搭建桥梁) 实现自定义的类型转换(非必须) 注册 将新增的文件加入`lib ...

  8. Cocos Creator 预制的使用模板(一般用于UI)

    Cocos Creator里绑定properties @property(cc.Prefab)XXUIPrefab: cc.Prefab = null; 在预制上挂脚本 import { Consta ...

  9. cocos creator jsb2.0手动绑定过程

    在打包原生包的时候js层想调用c++层,但是没有对应的实现需要自己扩展自己的jsb,官方有两种绑定方式:手动绑定和自动绑定,这里着重介绍手动绑定: 首先找到cocos creator自带的c++层的源 ...

最新文章

  1. 谁是中国大学理科的王者?
  2. Android Framework增加API 报错 Missing nullability on parameter
  3. ant 驱动 svnkit 下载代码
  4. 在打开的Web表单模态窗口中,避免点击服务端控件时弹出新窗口的技巧
  5. android rxbus 一个页面监听,Android RxBus的使用
  6. 判斷作業系統為 64bit 或 32bit z
  7. ie6 png不透明的解决方法
  8. csdn博客搬家:及其方便的博客迁移、搬家工具,支持主流博客平台----CsdnSyncHexo。
  9. VOIP Codec 三剑客之 ISAC/ILBC -- ISAC (1) 介绍
  10. windows新电脑只有固态C盘,如何分盘
  11. Effective C++读书笔记 摘自 pandawuwyj的专栏
  12. Badge分析如何逼死处女座
  13. 【云计算】1_云计算基础介绍
  14. 量子计算(十四):超导量子芯片
  15. 神经网络入门(个人理解)
  16. win10保存文件需要管理员权限无法保存
  17. linux脚本一般放在哪个目录下,Linux Deepin 将脚本放在个人目录下直接执行
  18. 在thinkphp框架中如何对多表进行操作(thinkphp多表查询方法)
  19. 酷狗计算机科技有限公司待遇,酷狗怎么样
  20. 基于RoBERTa-wwm动态融合模型的中文电子病历命名实体识别

热门文章

  1. FRN归一化层(Tensorflow)实现
  2. 云南省2021年高考成绩什么时候可以查询,2021年云南高考成绩查询时间安排 什么时候出分...
  3. java计算机毕业设计家庭食谱管理系统2021(附源码、数据库)
  4. 20秋PHP作业3,大工20秋《模拟电子技术》在线作业3答案
  5. 小新Air13安装Linux(Deepin)与Windows双系统之日记
  6. 二十几岁的女孩应该拥有的思考
  7. python海龟绘图小猪佩奇_宝宝爱看小猪佩奇,很简单,让我们用python搞定它
  8. Scott Rogers:不会写剧本的导演不是个好的游戏设计师
  9. 企鹅智酷“2015年互联网终极报告——解读九大行业红利”
  10. 小猿日记(6) - 技术方案成长篇