用3.17编译lua工程,路径太深报错

D:/B/frameworks/runtime-src/proj.android/app/build/intermediates/ndkBuild/release/obj/local/armeabi/objs/cocos2d_lua_android_static/D_/B/frameworks/runtime-src/proj.android/app/jni/////cocos2d-x/cocos/scripting/lua-bindings/proj.android/__/manual/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxLuaJavaBridge.o

frameworks\cocos2d-x\cocos\scripting\lua-bindings\proj.android\manual\platform\android\CCLuaJavaBridge.cpp

生成路径把…都换成__了,搞这么深都创建不了了

1赞

windows路径好像不能超过256?貌似win10解决了这个问题?

引擎的脚本绑定的文件名太长了,路径也放的深,临时解决方式可以仿照 lua-tests 测试工程,把引擎目录从

frameworks/runtime-src/proj.android/app/jni/__/__/__/__/cocos2d-x

移动出来

就是win10

这gradle完全没感觉到省心啊,改各种编译问题改的脑壳疼

刚测试了最新版:3.17 cpp-empty-test超长路径测试:
未安装patch打包失败:

安装patch后打包成功:

patch地址: https://github.com/halx99/wsLongPaths/tree/master/dists/ndk-wsls-2.0-final

我的环境是ndk-r17 + AndroidStudio 3.1.2, 理论上ndk-r16 + AndroidStudio 3.0也行

这个 patch 原理是什么,怎么安装

具体我发你们英文论坛帖子了: https://discuss.cocos2d-x.org/t/the-solution-of-ndk-compile-system-longpaths-issue-on-windows-platform/42705

安装方法:
1: 确保定义环境变量ANDROID_NDK_ROOT指向ndk-bundle目录
2: 已管理员身份运行ndk-wsls-2.0-final目录下install.bat即可

原理很简单: API Hook, 代码开源的, VS2017 & C++17编译

1赞

我们论坛,我们论坛,不是你们:sweat_smile:

多谢大佬解答~

哈哈:smile:
上传个发布版: 方便安装: ndk-wsls-2.0-final.zip (54.9 KB)

1赞

更新一下版本,修复了一些问题:

  1. 修复c源文件编译BUG
  2. 修复win7 md命令不支持长路径问题

ndk-wsls-2.0-20180609.zip (62.0 KB)

lua 自动绑定
README 写的是 r10c
然后 genbindings.py 这个文件里 使用的是 “toolchains/llvm/prebuilt” 路径
在 r10c 目录下
没有 llvm 这个文件夹
只有llvm-3.4 和 llvm-3.5

然后我看了3.16版本的
发现 genbindings.py 写的是 toolchains/llvm-3.3/prebuilt 和 toolchains/llvm-3.4/prebuilt

然后我把这3.16的拷贝到3.17
运行报错了。
然后我去运行了3.16版本的 genbindings.py ,运行成功

3.17运行 genbindings.py 报错如下

Errors in parsing headers:
1. <severity = Fatal,
    location = <SourceLocation file 'E:\\project\\new_project\\client\\frameworks\\cocos2d-x/cocos\\platform/android/CCPlatformDefine-android.h', line 33, column 10>,
    details = "'android/log.h' file not found">
====

上传中…

我擦。。。我怎么回到这个帖子里面了 - -!

自己回复一下吧,换了ndk-r16b
可以正常绑定了。。。

1赞

creator 的模板工程 在 Application.mk 有这个设置,可以尝试一下,或者这个能一定程度的解决路径过长的问题?欢迎反馈

# To solve windows commands char length too long
APP_SHORT_COMMANDS := true

看了下我们项目的Application.mk, 早在今年2月份就加了APP_SHORT_COMMANDS := true配置,但我最近依然遇到长路径问题,所以,这个配置目前解决不了长路径问题,即使最新版本ndk-r17也不行。

V2.1更新,修复了windows 系统命令管道不支持过长路径问题:
ndk-wsls-2.1.zip (70.1 KB)

1赞

厉害了:+1:

MARK

没啥用啊,依旧报错啊啊啊啊啊
In file included from
D:/work/upgraded_proj/test/MyLuaGame/frameworks/runtime-src/proj.android/app/jni/…/…/…/…/cocos2d-x/cocos/scripting/lua-bindings/proj.android/…/auto/lua_cocos2dx_physics3d_auto.cpp:3:
D:/work/upgraded_proj/test/MyLuaGame/frameworks/runtime-src/proj.android/app/jni/…/…/…/…/cocos2d-x/cocos/3d/…\physics3d/CCPhysics3D.h:57:10: fatal error: ‘bullet/BulletCollision/Colli
sionDispatch/btGhostObject.h’ file not found
#include “bullet/BulletCollision/CollisionDispatch/btGhostObject.h”
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1
error generated.
ndk-make: *** [D:/work/upgraded_proj/test/MyLuaGame/frameworks/runtime-src/proj.android/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/cocos2d_lua_static/__/auto/lua_c
ocos2dx_physics3d_auto.o] Error 1
ndk-make: *** Waiting for unfinished jobs…

:MyLuaGame:externalNativeBuildRelease (Thread[Task worker for ‘:’ Thread 3,5,main]) completed. Took 38.109 secs.

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ‘:MyLuaGame:externalNativeBuildRelease’.

Build command failed.
Error while executing process D:\work\dev_env\android-ndk-r16b\ndk-build.cmd with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=D:\work\upgraded_proj\test\MyLuaGame\frameworks\runtim
e-src\proj.android\app\jni\Android.mk NDK_APPLICATION_MK=D:\work\upgraded_proj\test\MyLuaGame\frameworks\runtime-src\proj.android\app\jni\Application.mk APP_ABI=armeabi-v7a NDK_ALL_ABIS=ar
meabi-v7a NDK_DEBUG=0 APP_PLATFORM=android-14 NDK_OUT=D:/work/upgraded_proj/test/MyLuaGame/frameworks/runtime-src/proj.android/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT=D:
work\upgraded_proj\test\MyLuaGame\frameworks\runtime-src\proj.android\app\build\intermediates\ndkBuild\release\lib NDK_TOOLCHAIN_VERSION=clang -j4 NDK_DEBUG=0 D:/work/upgraded_proj/test/My
LuaGame/frameworks/runtime-src/proj.android/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libcocos2dlua.so}
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_audioengine_auto.cpp
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= CCComponentLua.cpp
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_3d_auto.cpp
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_cocosdenshion_auto.cpp
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_cocosbuilder_auto.cpp
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_csloader_auto.cpp
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_studio_auto.cpp
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= lua-cocos-studio-conversions.cpp
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_spine_auto.cpp
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_experimental_video_auto.cpp
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_ui_auto.cpp
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_experimental_webview_auto.cpp
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_extension_auto.cpp
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_physics3d_auto.cpp
[armeabi-v7a] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_navmesh_auto.cpp
In file included from D:/work/upgraded_proj/test/MyLuaGame/frameworks/runtime-src/proj.android/app/jni/…/…/…/…/cocos2d-x/cocos/scripting/lua-bindings/proj.android/…/auto/lua_cocos2d
x_physics3d_auto.cpp:3:
D:/work/upgraded_proj/test/MyLuaGame/frameworks/runtime-src/proj.android/app/jni/…/…/…/…/cocos2d-x/cocos/3d/…\physics3d/CCPhysics3D.h:57:10: fatal error: ‘bullet/BulletCollision/Col
lisionDispatch/btGhostObject.h’ file not found
#include “bullet/BulletCollision/CollisionDispatch/btGhostObject.h”
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
ndk-make: *** [D:/work/upgraded_proj/test/MyLuaGame/frameworks/runtime-src/proj.android/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/cocos2d_lua_static/__/auto/lua
_cocos2dx_physics3d_auto.o] Error 1
ndk-make: *** Waiting for unfinished jobs…

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.

  • Get more help at https://help.gradle.org

BUILD FAILED in 40s
47 actionable tasks: 10 executed, 37 up-to-date