[Warning] Creator 2.0.8 以下版本发布 Android 工程时,不要使用 NDK18

Google 官网已更新 NDK18,由于这次更新移除了 GNU 编译器,目前 Creator 的 Android 工程还在用。

更新的话会导致编译错误:

Android NDK: Invalid APP_STL value: gnustl_static

Android NDK: Please use one of the following instead: none system c++_static c++_shared

预告:Creator 2.1 版本会更新 Android 原生配置,编译器从 GNU 改为 Clang

2赞

Cocos2d-x 3.16 及以下,同样。3.17 不受影响。

安装什么版本 java,android studio,sdk,ndk 能在文档里面写清楚不,每次装一次,都头大一次。 您们cocos领导们会自己当一个普通用户去下载这些东西,然后自己装一次不?

3赞


文档其实挺详细的。我昨晚也是用18一直报错,看了文档,去重新下载了16就解决了。
不过,一有改动,还是能第一时间更新文档比较好。
毕竟,不是所有人都会来论坛,而且论坛讨论很多问题比较杂。

大佬,我们写清楚了

勾选 NDK,确保版本在 14 以上(推荐使用 r16)见此链接

因为有一些开发者会主动更新 Android Studio, NDK,这个帖子主要用来提醒这次不要更新 NDK r18.


请以正常的语气讨论问题,不要用 ”您“,”领导“,这都不是该属于我的符号

1赞

建了一个 issue, https://github.com/cocos-creator/creator-docs/issues/616 ,节后会有人更新

文档几乎是不能实时,只能及时。先有的问题,才会有 FAQ。


这个 Google 官方有写,有版本更新先看 ChangeLog 会是一个好的习惯

https://developer.android.google.cn/ndk/downloads/revision_history

不是要故意发牢骚,知道你们开源免费也不容易,但是这个creator装了一天了,把操作系统都重装了,原生程序编译还是出错,以前用unity哪有这么麻烦。还想调用c++模块,感觉要重新上一次大学才能会用。

关于文档安装这部分的内容我在 windows 环境和 mac 环境都安装过好几次了,文档里面的版本都是可以正确使用的,我也几乎每天都在用。但是吧现在各种软硬件都在不断的更新不断的更新,我们也在不断的进行适配以及更新文档,因为现在文档只有我在维护所以有时候可能没有那么快就更新到官网,如果你们在使用中出现问题或者对文档有疑问的话,欢迎到 Creator 用户手册 中向我们反馈问题,如果有错误的话我们会及时更新文档的~但是在此之前还是希望你们可以好好看一下文档~

可是文档有说编译出错,需要重新安装操作系统吗?不看文档,遇到问题不找针对的解决方式,就重装系统 …

重装了2次操作系统以后,终于发现是我的操作系统的登录用户名是中文名的缘故。
一个坑跳完,又跳进另外一个坑,又搞了一天了。
我想调用c++代码,执行genbindings.py错误。还麻烦辛苦抽空帮我看看!
D:\Soft\CocosCreator\resources\cocos2d-x\tools\tojs>genbindings.py
PYTHON_BIN not defined, use current python.
generating userconf.ini…
Generating bindings for gfx…
C:\Python27\python.exe D:\Soft\CocosCreator\resources\cocos2d-x\tools\bindings-generator/generator.py D:\Soft\CocosCreator\resources\cocos2d-x/tools/tojs/gfx.ini -s gfx -t spidermonkey -o D:\Soft\CocosCreator\resources\cocos2d-x/cocos/scripting/js-bindings/auto -n jsb_gfx_auto
Using userconfig
[(‘androidndkdir’, ‘C:\Users\ysr\AppData\Local\Android\Sdk\ndk-bundle’), (‘clangllvmdir’, ‘C:\Users\ysr\AppData\Local\Android\Sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64’), (‘gcc_toolchain_dir’, ‘C:\Users\ysr\AppData\Local\Android\Sdk\ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64’), (‘cocosdir’, ‘D:\Soft\CocosCreator\resources\cocos2d-x’), (‘cxxgeneratordir’, ‘D:\Soft\CocosCreator\resources\cocos2d-x\tools\bindings-generator’), (‘extra_flags’, ‘’)]
… Generating bindings for target spidermonkey
… … Processing section gfx
Traceback (most recent call last):
File “D:\Soft\CocosCreator\resources\cocos2d-x\tools\bindings-generator/generator.py”, line 1880, in
main()
File “D:\Soft\CocosCreator\resources\cocos2d-x\tools\bindings-generator/generator.py”, line 1875, in main
generator = Generator(gen_opts)
File “D:\Soft\CocosCreator\resources\cocos2d-x\tools\bindings-generator/generator.py”, line 1293, in init
self.index = cindex.Index.create()
File “D:\Soft\CocosCreator\resources\cocos2d-x\tools\bindings-generator\clang\cindex.py”, line 2579, in create
return Index(conf.lib.clang_createIndex(excludeDecls, 0))
File “D:\Soft\CocosCreator\resources\cocos2d-x\tools\bindings-generator\clang\cindex.py”, line 195, in get
value = self.wrapped(instance)
File “D:\Soft\CocosCreator\resources\cocos2d-x\tools\bindings-generator\clang\cindex.py”, line 4007, in lib
lib = self.get_cindex_library()
File “D:\Soft\CocosCreator\resources\cocos2d-x\tools\bindings-generator\clang\cindex.py”, line 4038, in get_cindex_library
raise LibclangError(msg)
LibclangError: [Error 126] . To provide a path to libclang use Config.set_library_path() or Config.set_library_file().

Generating javascript bindings fails.

1赞

详细读一下 cocos2d-x\tools\bindings-generator 目录下的 README.md,你需要下载 libclang

  • Download Pre-Built Binaries according your platforms
  • Unzip or install binaries. For example, unzip clang+llvm-5.0.0-x86_64-apple-darwin.tar.xz for macOS.
  • Find libclang.dll (windows) or libclang.dylib (macOS)
  • Copy the dynamic library to bindings-generator/libclang folder.

谢谢,问题解决了,再请教一个问题,creator怎么调用第三方.so文件里面的函数呢?具体思路是怎样的?

思路:分割成两块

  1. 2d-x-lite 的 Android 工程(当做一个普通的使用 NDK 的 Android 工程)如何再一个加载 so,先了解目前 so 是如何加载的 (逻辑在 onLoadNativeLibraries
  2. 导出绑定代码,了解自动绑定的限制 (如果必要的话,手动绑定)

一定要用jsb绑定去解决吗?用js调用Java,java调用.so这样的思路可行不?感觉jsb绑定好复杂:joy:,前面成功执行一个bindings-generator,已经让我精疲力尽,后面还有一大堆坑等着我去跳。

js 调用 java,本身已经经过了 js 调 c++,c++ 调 java,然后你再在 java 中调 c++。有点绕。。。

推测性能上,没有直接 jsb 那么好,如果是偶尔用一次的接口关系应该不大,如果频繁使用的话,还是建议 jsb。你可以自己验证一下,两种方式的性能差异。

中秋快乐!
请问下 c++层发送自定义事件,js里要怎么接收?


我这么写不行··········

自定义事件 C++ 内部用,没有分发到 JS 层。你要实现类似的功能,可以在 C++ 中的事件响应回调中,通过 JSB 调用 JS 方法。参考:

https://github.com/cocos-creator/cocos2d-x-lite/pull/1267

好的吧,开始就是没弄明白,c++调用js的方法,想采用发送消息的形式,结果不行······
相关c++调用js的资料,网上找了半天,也没找到···········官方文档里,只有一个调用js的回调的。 继续埋头研究吧,如果大佬有相关的文档,请发我下,感激不尽。
月满中秋,阖家欢乐

我看键盘事件相关的,

感觉这个eventName应该是js文件里的吧,我打开engine下的所有js文件,也没有搜索到·····
请老大指点一下下·····

兄弟,你要看关联的 PR

Depends on cocos-creator/engine#2734 cocos-creator/engine#2751

有改:jsb/builtin/jsb-adapter/EventTarget.js,在 jsb-adapter