Невозможно собрать проект Android NDK после последнего обновления NDK и устаревания gcc - PullRequest
0 голосов
/ 23 сентября 2018

Я обновил Android NDK до последней доступной версии, и теперь мой проект больше не компилируется.При первой попытке скомпилировать проект я получил сообщение об gcc устаревании и пригласил заменить его на clang.

Поэтому я попытался отредактировать

externalNativeBuild {
                cmake {
                    arguments '-DANDROID_TOOLCHAIN=gcc', '-DANDROID_STL=gnustl_static'
                }
            }

In

externalNativeBuild {
                cmake {
                    arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static'
                }
            }

Но, к сожалению, теперь я получаю сообщение об ошибке:

Error while executing process C:\Android\android-sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {-HD:\My Project\myApp\jni -BD:\My Project\myApp\.externalNativeBuild\cmake\release\armeabi-v7a -DANDROID_ABI=armeabi-v7a -DANDROID_PLATFORM=android-21 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\My Project\myApp\gradleBuild\intermediates\cmake\release\obj\armeabi-v7a -DCMAKE_BUILD_TYPE=Release -DANDROID_NDK=C:\Android\android-sdk\ndk-bundle -DCMAKE_TOOLCHAIN_FILE=C:\Android\android-sdk\ndk-bundle\build\cmake\android.toolchain.cmake -DCMAKE_MAKE_PROGRAM=C:\Android\android-sdk\cmake\3.6.4111459\bin\ninja.exe -GAndroid Gradle - Ninja -DANDROID_TOOLCHAIN=clang -DANDROID_STL=gnustl_static}

Компиляция проекта перед обновлением NDK работала нормально.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Эта среда выполнения тесно связана с GCC, который больше не поддерживается в NDK.Таким образом, он не получил обновления для нескольких выпусков.Версия в NDK поддерживает большую часть C ++ 11 (см. Выпуск 82), а некоторые части этой библиотеки несовместимы с Clang.

gnustl

Эта библиотека устарела и будет удалена в NDK r18.Начиная с NDK r16, вам следует использовать libc ++.

Вы должны использовать "-DANDROID_STL=c++_static" вместо -DANDROID_STL=gnustl_static

0 голосов
/ 24 сентября 2018
  1. Не пытайтесь создавать NDK, если путь к вашим источникам содержит пробелы.
  2. Последний NDK также устарел в gnustl.Вместо этого попробуйте c ++ _ shared.
  3. Вам не нужно указывать ANDROID_TOOLCHAIN ​​в аргументах .
  4. . Убедитесь, что вы используете версию подключаемого модуля Android, которая совместима споследний NDK см. https://developer.android.com/studio/releases/gradle-plugin.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...