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