Ответ 1
- Откройте SDK Manager
- Перейдите на вкладку Инструменты SDK tab
- Установить CMake
Мне нужно добавить код C/C++ в мою программу Android, для которой мне нужны LLDB, CMake и NDK. Я нашел LLDB и NDK в менеджере SDK, но оттуда отсутствует CMake. Я попытался вручную загрузить его с официального сайта CMake и обнаружил, что для Android нам нужен CMake, настроенный в SDK.
Как видите, такой опции, как CMake, нет.
Где я могу найти версию CMake для Android?
Я пробовал CMake с веб-сайта и один я нашел в папке ndk-bundle/build, но оба выдают ту же ошибку, как показано ниже. Что из этого можно сделать и как решить проблему?
Build command failed.
Error while executing 'C:\Users\amishr33\AppData\Local\Android\sdk\cmake\bin\cmake.exe' with arguments {-HC:\Users\amishr33\AndroidStudioProjects\MyApplication\app\src\main\jni -BC:\Users\amishr33\AndroidStudioProjects\MyApplication\app\.externalNativeBuild\cmake\debug\armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=C:\Users\amishr33\AppData\Local\Android\sdk\ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\amishr33\AndroidStudioProjects\MyApplication\app\build\intermediates\cmake\debug\obj\armeabi -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=C:\Users\amishr33\AppData\Local\Android\sdk\cmake\bin\ninja.exe -DCMAKE_TOOLCHAIN_FILE=C:\Users\amishr33\AppData\Local\Android\sdk\ndk-bundle\build\cmake\android.toolchain.cmake -DANDROID_NATIVE_API_LEVEL=15 -DCMAKE_CXX_FLAGS=-std=c++11 -DANDROID_TOOLCHAIN=clang -DANDROID_STL=gnustl_static}
CMake Error: Could not create named generator Android Gradle - Ninja
Generators
Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
Optional [arch] can be "Win64" or "IA64".
Visual Studio 9 2008 [arch] = Generates Visual Studio 2008 project files.
Optional [arch] can be "Win64" or "IA64".
Visual Studio 8 2005 [arch] = Generates Visual Studio 2005 project files.
Optional [arch] can be "Win64".
Visual Studio 7 .NET 2003 = Deprecated. Generates Visual Studio .NET
2003 project files.
Borland Makefiles = Generates Borland makefiles.
NMake Makefiles = Generates NMake makefiles.
NMake Makefiles JOM = Generates JOM makefiles.
Green Hills MULTI = Generates Green Hills MULTI files
(experimental, work-in-progress).
MSYS Makefiles = Generates MSYS makefiles.
MinGW Makefiles = Generates a make file for use with
mingw32-make.
Unix Makefiles = Generates standard UNIX makefiles.
Ninja = Generates build.ninja files.
Watcom WMake = Generates Watcom WMake makefiles.
CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files.
CodeBlocks - NMake Makefiles = Generates CodeBlocks project files.
CodeBlocks - Ninja = Generates CodeBlocks project files.
CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
CodeLite - MinGW Makefiles = Generates CodeLite project files.
CodeLite - NMake Makefiles = Generates CodeLite project files.
CodeLite - Ninja = Generates CodeLite project files.
CodeLite - Unix Makefiles = Generates CodeLite project files.
Sublime Text 2 - MinGW Makefiles
= Generates Sublime Text 2 project files.
Sublime Text 2 - NMake Makefiles
= Generates Sublime Text 2 project files.
Sublime Text 2 - Ninja = Generates Sublime Text 2 project files.
Sublime Text 2 - Unix Makefiles
= Generates Sublime Text 2 project files.
Kate - MinGW Makefiles = Generates Kate project files.
Kate - NMake Makefiles = Generates Kate project files.
Kate - Ninja = Generates Kate project files.
Kate - Unix Makefiles = Generates Kate project files.
Eclipse CDT4 - NMake Makefiles
= Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - MinGW Makefiles
= Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
Error:executing external native build for cmake C:\Users\amishr33\AndroidStudioProjects\MyApplication\app\src\main\jni\CMakeLists.txt
Если вы выполните следующее, вы можете получить CMake без проблем:
Проверьте файл build.gradle для своего модуля приложения
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
Удалить раздел cmake
Повторно синхронизируйте проект: перейдите в меню Build → Refersh Lined C++ проектов
Щелкните правой кнопкой мыши по модулю, такому как модуль приложения, выберите в меню "Связать проект C++ с Gradle".
Вы должны увидеть диалог, похожий на тот, что показан на рисунке ниже.
Нажмите ОК.
В моем случае (Android Studio 3.0) на вкладке "Инструменты SDK" в настройках "Внешний вид и поведение → Параметры системы → Android SDK" не было CMake. Однако я заметил, что на вкладке "Сайты обновления SDK" есть только две записи, одна из которых (Android Repository https://dl.google.com/android/repository/repository2-1.xml) имела красную метку в столбце "включено". При наведении курсора он прочитал "ошибка 407", что является ошибкой аутентификации прокси. У меня были правильные настройки прокси (тестовое соединение работало нормально с тем же URL репозитория), так что это было очень странно. Перезапуск андроид студии не помог. Поэтому я добавил новую запись с тем же хранилищем, и на этот раз она работала нормально, а CMake появился на другой вкладке. Надеюсь, это кому-нибудь поможет.
Вы можете установить его в SDK Manager Tools, но сначала вы должны закрыть свой открытый проект. Используйте конфигурацию в меню "Пуск".
Проверьте, используете ли вы 64-разрядную версию Android Studio. В 32-разрядной версии Android Studio CMake не будет отображаться в SDK Manager.
путь к модулю, в котором находится ваш cmake
если ваш cmake существует в главном приложении
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
если ваш cmake существует в любом модуле
externalNativeBuild {
cmake {
path file('../modulelib/CMakeLists.txt')
}
}
где "modulelib" - это имя вашей папки библиотечного модуля
Проверьте это, я думаю, что этот сайт объясняет, что вам нужно:
Не забудьте проверить, что вам нужно
NDK: https://developer.android.com/ndk/downloads/index.html Источник: https://developer.android.com/ndk/index.html
CMake: https://cmake.org/files/v3.7/cmake-3.7.1-win64-x64.zip Источник: https://cmake.org/
LLDB (только для систем Debian): http://apt.llvm.org/ Источник: http://lldb.llvm.org/download.html
Как только вы загрузите эти файлы, скопируйте их в папку SDK (обычно в: "C:\android-sdk \") Вы можете локализовать папку здесь:
Затем вы можете продолжить с предыдущим руководством после загрузки :)
В моем случае изменение CMake path
сработало:
externalNativeBuild {
/*
cmake {
path "CMakeLists.txt"
}
*/
cmake {
path 'src/main/jni/opus/CMakeLists.txt'
}
}
Для меня Mac OS Android студия. в File-> Project Structure-> Project я изменил версию Gradle на 4.4 и версию плагина Android на 3.1.0, тогда все становится хорошо.
Кроме того, вы также можете изменить версию плагина Android в gradle-> classpath 'com.android.tools.build:gradle:3.1.0'
Для меня то, что решил, как снять вариант "версия" в моем gradle
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt"
//version was here
}
}