为什么 Android Studio 试图在构建过程中连接文件名?

Why is Android Studio trying to concatenate filenames during the build process?

我正在尝试构建这个项目:https://github.com/sureshjoshi/android-ndk-swig-example

这是一个使用 SWIG 包装 C++ 库以供在 Android 上使用的小型示例项目。构建时出现此错误:

C:\Users\elarson\Desktop\Downloads\android-ndk-swig-example-master\NDKExample\app\src\main\jni\SeePlusPlus_wrap.cxx:802:1: fatal error: opening dependency file C:\Users\elarson\Desktop\Downloads\android-ndk-swig-example-master\NDKExample\app\build\intermediates\ndk\debug\obj/local/arm64-v8a/objs/SeePlusPlus/C_\Users\elarson\Desktop\Downloads\android-ndk-swig-example-master\NDKExample\app\src\main\jni\SeePlusPlus_wrap.o.d: No such file or directory

打破它,我看到它正在尝试打开这个文件:

C:\Users\elarson\Desktop\Downloads\android-ndk-swig-example-master\NDKExample\app\build\intermediates\ndk\debug\obj/local/arm64-v8a/objs/SeePlusPlus/C_\Users\elarson\Desktop\Downloads\android-ndk-swig-example-master\NDKExample\app\src\main\jni\SeePlusPlus_wrap.o.d

进一步分解,我看到此文件路径两次包含项目的绝对路径,但冒号被下划线替换:

C:\Users\elarson\Desktop\Downloads\android-ndk-swig-example-master\NDKExample\app\build\intermediates\ndk\debug\obj/local/arm64-v8a/objs/SeePlusPlus/

C_\Users\elarson\Desktop\Downloads\android-ndk-swig-example-master\NDKExample\app\src\main\jni\SeePlusPlus_wrap.o.d

我想知道是什么原因造成的。我在没有空格的路径中安装了 NDK,因为众所周知这会导致问题。你可以看到我的项目在它的路径中也没有空格。

在构建过程中实际执行的失败行是这样的,为清楚起见分解为:

C:\Dev\Android\android-ndk-r10d\ndk-build.cmd

NDK_PROJECT_PATH=null

APP_BUILD_SCRIPT=C:\Users\elarson\Desktop\Downloads\android-ndk-swig-example-master\NDKExample\app\build\intermediates\ndk\debug\Android.mk

APP_PLATFORM=android-21

NDK_OUT=C:\Users\elarson\Desktop\Downloads\android-ndk-swig-example-master\NDKExample\app\build\intermediates\ndk\debug\obj

NDK_LIBS_OUT=C:\Users\elarson\Desktop\Downloads\android-ndk-swig-example-master\NDKExample\app\build\intermediates\ndk\debug\lib

APP_STL=gnustl_shared

APP_ABI=all

这似乎与文件路径长度有关。在 D:\production\Pong\Devel2010\Src\UnityGames\BhvrDemo\BHVRSWIGTest\

中也不起作用

我从

移动了我的项目文件夹

C:\Users\elarson\Desktop\Downloads\android-ndk-swig-example-master

D:\Almo\Work\android-ndk-swig-example-master

现在可以使用了,但可能只是因为文件名更短了:

D:\Almo\BinkSWIGTest2\NDKExample\app\build\intermediates\ndk\debug\obj\local\arm64-v8a\objs\SeePlusPlus\D_\Almo\BinkSWIGTest2\NDKExample\app\src\main\jni\SeePlusPlus_wrap.o.d

仍在创建中。