Я создаю свои Android APK из командной строки в Windows, используя Gradle. Все работает нормально, кроме случаев, когда в имени пути есть пробел. В этом случае Gradle, похоже, неправильно передает путь к CMake, как видно из вывода консоли.
В моем build.gradle
CMake называется так:
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt"
}
}
Теперь, когда я компилирую свой проект из C:\test\apktest
, все в порядке. Когда я компилирую его из C:\test\apk test
(обратите внимание на символ пробела!), Он больше не работает. Вывод консоли такой:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:externalNativeBuildArm7Debug'.
> Build command failed.
Error while executing process C:\Users\andreas\AppData\Local\Android\Sdk\cmake\3.10.2.4988404\bin\cmake.exe with arguments {--build C:\test\apk test\app\.externalNativeBuild\cmake\arm7Debug\armeabi-v7a --target myproject}
Unknown argument test\app\.externalNativeBuild\cmake\arm7Debug\armeabi-v7a
Usage: cmake --build <dir> [options] [-- [native-options]]
Options:
<dir> = Project binary directory to be built.
--target <tgt> = Build <tgt> instead of default targets.
May only be specified once.
--config <cfg> = For multi-configuration tools, choose <cfg>.
--clean-first = Build target 'clean' first, then build.
(To clean only, use --target 'clean'.)
--use-stderr = Ignored. Behavior is default in CMake >= 3.0.
-- = Pass remaining options to the native tool.
Как видите, CMake неправильно запускается из Gradle, потому что он запускается так: cmake --build C:\test\apk test\app\.externalNativeBuild\cmake\arm7Debug\armeabi-v7a --target myproject
, но вокруг аргумента --build
должны быть двойные кавычки, чтобы он анализировался как один аргумент, а не как два отдельных аргументы.
Я думаю, что это ошибка, но где об этом следует сообщать? Android NDK? Gradle? CMake?
Кроме того, есть ли обходной путь, кроме использования путей с пробелами?