Добавьте код C и C++ в свой проект Android, поместив его в каталог cpp в модуле проекта. При сборке проекта этот код компилируется в нативную библиотеку, которую Gradle может упаковать вместе с вашим приложением. Ваш код Java или Kotlin затем сможет вызывать функции в вашей нативной библиотеке через интерфейс Java Native Interface (JNI). Чтобы узнать больше об использовании фреймворка JNI, ознакомьтесь с советами по JNI для Android .
 Android Studio поддерживает CMake, что полезно для кроссплатформенных проектов. Android Studio также поддерживает ndk-build , который может быть быстрее CMake, но поддерживает только Android. Использование CMake и ndk-build в одном модуле в настоящее время не поддерживается.
 Чтобы импортировать существующую библиотеку ndk-build в ваш проект Android Studio, узнайте, как связать Gradle с вашим проектом собственной библиотеки .
На этой странице показано, как настроить Android Studio с необходимыми инструментами сборки, создать новый проект с поддержкой C/C++ и добавить новые файлы C/C++ в ваш проект.
Если вместо этого вы хотите добавить собственный код в существующий проект, выполните следующие действия:
-  Создайте новые исходные файлы и добавьте их в свой проект Android Studio.- Пропустите этот шаг, если у вас уже есть собственный код или вы хотите импортировать готовую собственную библиотеку.
 
-  Настройте CMake для сборки вашего нативного исходного кода в библиотеку. Этот скрипт сборки необходим при импорте и компоновке готовых или платформенных библиотек.-  Если у вас уже есть собственная библиотека, которая имеет скрипт сборки CMakeLists.txtили используетndk-buildи включает скрипт сборкиAndroid.mk, пропустите этот шаг.
 
-  Если у вас уже есть собственная библиотека, которая имеет скрипт сборки 
-  Настройте Gradle, указав путь к файлу скрипта CMake или ndk-build. Gradle использует скрипт сборки для импорта исходного кода в ваш проект Android Studio и упаковки вашей нативной библиотеки в приложение.
 После настройки проекта получите доступ к собственным функциям из кода Java или Kotlin, используя фреймворк JNI . Чтобы собрать и запустить приложение, нажмите «Запустить».  .
 .
 Примечание: если ваш существующий проект использует устаревший инструмент ndkCompile , перейдите на использование CMake или ndk-build .
Загрузите NDK и инструменты сборки
Для компиляции и отладки собственного кода вашего приложения вам понадобятся следующие компоненты:
- Android Native Development Kit (NDK) : набор инструментов, позволяющий использовать код C и C++ с Android. NDK предоставляет библиотеки платформы, позволяющие управлять собственными действиями и получать доступ к физическим компонентам устройства, таким как датчики и сенсорный ввод.
-  CMake : внешний инструмент сборки, работающий вместе с Gradle для сборки вашей нативной библиотеки. Этот компонент вам не нужен, если вы планируете использовать только ndk-build.
- LLDB : отладчик в Android Studio, который отлаживает машинный код .
Информацию об установке этих компонентов см. в разделе Установка и настройка NDK и CMake .
Создать новый проект с поддержкой C/C++
Процесс создания нового проекта с поддержкой нативного кода аналогичен созданию любого другого проекта Android Studio , но с дополнительным шагом:
- В разделе мастера « Выберите проект » выберите тип проекта Native C++ .
- Нажмите «Далее» .
- Заполните все остальные поля в следующем разделе мастера.
- Нажмите «Далее» .
-  В разделе мастера «Настройка поддержки C++» вы можете настроить свой проект с помощью поля «Стандарт C++» .- В раскрывающемся списке выберите нужную стандартизацию C++. При выборе Toolchain Default будут использоваться настройки CMake по умолчанию.
 
- Нажмите кнопку Готово .
После того, как Android Studio завершит создание нового проекта, откройте панель «Проект» в левой части IDE и выберите в меню пункт «Вид Android» . Как показано на рисунке 1, Android Studio добавит группу cpp :

Рисунок 1. Группы представлений Android для ваших собственных источников и внешних скриптов сборки.
Примечание: это представление не отражает фактическую иерархию файлов на диске, а группирует похожие файлы для упрощения навигации по проекту.
 Группа cpp — это место, где вы найдете все исходные файлы нативного кода, заголовочные файлы, скрипты сборки для CMake или ndk-build , а также готовые библиотеки, входящие в ваш проект. Для новых проектов Android Studio создает пример исходного файла на C++ native-lib.cpp и помещает его в каталог src/main/cpp/ вашего модуля app. Этот пример кода предоставляет простую функцию на C++ stringFromJNI() , которая возвращает строку "Hello from C++" . Узнайте, как добавить дополнительные исходные файлы в свой проект, в разделе о создании новых исходных файлов нативного кода .
 Подобно тому, как файлы build.gradle указывают Gradle, как собирать ваше приложение, CMake и ndk-build требуют скрипт сборки, чтобы знать, как собирать вашу нативную библиотеку. Для новых проектов Android Studio создаёт скрипт сборки CMake, CMakeLists.txt , и помещает его в корневой каталог вашего модуля. Подробнее о содержимом этого скрипта сборки см. в разделе «Настройка CMake» .
Создайте и запустите пример приложения
 Когда вы нажимаете «Выполнить»  Android Studio собирает и запускает приложение, отображающее текст «Hello from C++» на вашем Android-устройстве или эмуляторе. Ниже описаны события, происходящие при сборке и запуске примера приложения:
 Android Studio собирает и запускает приложение, отображающее текст «Hello from C++» на вашем Android-устройстве или эмуляторе. Ниже описаны события, происходящие при сборке и запуске примера приложения:
-  Gradle вызывает ваш внешний скрипт сборки, CMakeLists.txt.
-  CMake следует командам в скрипте сборки, чтобы скомпилировать исходный файл C++, native-lib.cpp, в общую объектную библиотеку и назвать еёlibnative-lib.so. Затем Gradle упаковывает её в приложение.
-  Во время выполнения MainActivityприложения загружает нативную библиотеку с помощьюSystem.loadLibrary(). Теперь нативная функция библиотеки,stringFromJNI(), доступна приложению.
-  MainActivity.onCreate()вызываетstringFromJNI(), который возвращает"Hello from C++"и использует его для обновленияTextView.
Чтобы убедиться, что Gradle упаковывает нативную библиотеку в приложение, используйте APK Analyzer :
- Выберите Сборка > Сборка пакетов/APK > Сборка APK .
- Выберите Сборка > Анализ APK .
-  Выберите APK или AAB из каталога app/build/outputs/и нажмите OK .
-  Как показано на рисунке 2, вы можете увидеть libnative-lib.soв окне APK Analyzer вlib/<ABI>/. Рисунок 2. Найдите нативную библиотеку с помощью APK Analyzer. 
Совет: если вы хотите поэкспериментировать с другими приложениями Android, использующими собственный код, нажмите Файл > Создать > Импортировать образец и выберите пример проекта из списка Ndk .
Создать новые исходные файлы C/C++
Чтобы добавить новые исходные файлы C/C++ в существующий проект, выполните следующие действия:
-  Если в основном исходном наборе вашего приложения еще нет каталога cpp/, создайте его следующим образом:
- Откройте панель «Проект» в левой части IDE и выберите в меню пункт «Представление проекта» .
- Перейдите в your-module > src .
- Щелкните правой кнопкой мыши по основному каталогу и выберите Создать > Каталог .
-  Введите cppв качестве имени каталога и нажмите OK .
-  Щелкните правой кнопкой мыши по каталогу cpp/и выберите Создать > Исходный файл C/C++ .
-  Введите имя исходного файла, например, native-lib.
-  В меню «Тип » выберите расширение исходного файла, например .cpp.-  Нажмите «Изменить типы файлов». Чтобы добавить в меню другие типы файлов , например Чтобы добавить в меню другие типы файлов , например.cxxили.hxx, выберите другое расширение файла в меню «Расширение исходного файла» и «Расширение заголовка» и нажмите кнопку «ОК» .
 
-  Нажмите «Изменить типы файлов».
- Чтобы создать файл заголовка, установите флажок Создать связанный заголовок .
- Нажмите ОК .
После добавления новых файлов C/C++ в ваш проект вам все равно необходимо настроить CMake для включения файлов в вашу собственную библиотеку.
Дополнительные ресурсы
Чтобы узнать больше о поддержке кода C/C++ в вашем приложении, попробуйте следующий ресурс.
Codelabs
- Создание Hello-CMake с помощью Android Studio В этой лабораторной работе показано, как использовать шаблон Android Studio CMake для начала разработки проекта Android NDK.
