Сбой команды построения: фатальная ошибка: файл 'string' не найден - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь собрать и запустить существующий проект Android NDK с последней версией Gradle.Но я получаю ниже ошибки при запуске приложения.

Build command failed.
Error while executing process D:\rapiscan\Android\Sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {--build D:\rapiscan\codebase\NGC\NextGenConsole\app\.externalNativeBuild\cmake\debug\x86 --target UiDataProvider}
[1/4] Building CXX object UiDataProvider/CMakeFiles/UiDataProvider.dir/UiCmdHandler.cpp.o
[2/4] Building CXX object UiDataProvider/CMakeFiles/UiDataProvider.dir/UiDataProvider.cpp.o
[3/4] Building CXX object UiDataProvider/CMakeFiles/UiDataProvider.dir/UiMessageGenerator.cpp.o
FAILED: D:\rapiscan\Android\Sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe  --target=i686-none-linux-android23 --gcc-toolchain=D:/rapiscan/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64  -DUiDataProvider_EXPORTS -IUiDataProvider -ID:/rapiscan/codebase/NGC/NextGenConsole/malibu/UiDataProvider -ID:/rapiscan/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/arm-linux-androideabi -ID:/rapiscan/codebase/NGC/NextGenConsole/malibu/Common -pthread -O0 -fno-limit-debug-info  -fPIC   -std=gnu++14 -MD -MT UiDataProvider/CMakeFiles/UiDataProvider.dir/UiDataProvider.cpp.o -MF UiDataProvider\CMakeFiles\UiDataProvider.dir\UiDataProvider.cpp.o.d -o UiDataProvider/CMakeFiles/UiDataProvider.dir/UiDataProvider.cpp.o -c D:\rapiscan\codebase\NGC\NextGenConsole\malibu\UiDataProvider\UiDataProvider.cpp
In file included from D:\rapiscan\codebase\NGC\NextGenConsole\malibu\UiDataProvider\UiDataProvider.cpp:1:

D:/rapiscan/codebase/NGC/NextGenConsole/malibu/UiDataProvider/UiDataProvider.h:5:10: fatal error: 'string' file not found

`#include <string>`


1 error generated.

Ниже приведена конфигурация ndk, указанная в приложении build.gradle

ndk {

            ndk {  
                abiFilters 'armeabi-v7a', 'arm64-v8a','x86'
            }
           externalNativeBuild {
                cmake {
                    arguments  '-DCMAKE_BUILD_TYPE=Debug',"-DPROJECT_DIR:STRING=${mb_sdk_path}",'-DANDROID_PLATFORM=android-23',  '-DANDROID_TOOLCHAIN=clang', '-DANDROID_ARM_NEON=TRUE', "-DPATH_TO_MALIBU:STRING=${mb_sdk_path}" ,"-DANDROID_STL=c++_static",
                    "-DTARGET_PLATFORM=Windows","-DUNIX=FALSE"
                    cppFlags "-std=c++14 -stdlib=libc++ -frtti -fexceptions"
                }
            }
        }

, а ниже - build.gradle

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.1'
        classpath 'com.novoda:bintray-release:0.9'
    }
}

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

У меня была та же проблема с последней версией gradle и cmake в моем проекте, но я обнаружил, что это происходит только тогда, когда Build Variants неверен, например, цель - debug-armeabi-v7a, но вы находитесь вrelease компиляция, пожалуйста, проверьте правильный вариант цели.

My settings:
NDK 19.1.5304403
CMake 3.10.2

build.gradle:

defaultConfig {
    ...
    multiDexEnabled true
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    ...
    externalNativeBuild {
        cmake {
        }
    }
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    ...

ПРИМЕЧАНИЕ: иногда тоже вы должны удалить скрытый каталог rm -rf app/.externalNativeBuild для него работает

0 голосов
/ 05 марта 2019

Использование -stdlib=libc++ с CMake является избыточным или неработающим в каждой версии NDK.Вам нужно -DANDROID_STL=c++_shared (или -DANDROID_STL=c++_static для статической библиотеки, или вообще ничего для статической библиотеки в NDK r18 +, поскольку это значение по умолчанию).

Передача -stdlib=libc++ может привести к тому, что компилятор будет выглядетьв неправильном расположении в старых выпусках NDK; по умолчанию используется r19 +.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...