Android add NDK support – добавление поддержки NDK в существующий проект
Не всегда получается так, что мы создаем проект с поддержкой C/C++ в самом начале. По мере развития проекта может возникнуть ситуация, когда необходимо подключить например библиотеку на С или C++. К сожалению мы не будем здесь обсуждать тонкости и теорию JNI(Java Native Interface) – часть работ мы уже опубликовали в нашем блоге. Но приведенные нами примеры помогут понять суть. Алгоритм добавления поддержки C/C++ в Android проект состоит из 4-х пунктов.
- Написание или импорт нативного кода
- Конфигурирование CMAKE для сборки нативного кода как библиотеки. Если в Вашей библиотеке имеется готовый файлCMakeLists.txt, этот пункт не является обязательным
- Конфигурирование системы сборки Gradle с указанием пути к CMAKE.
- Создание JNI интерфейса для работы с C++ кодом из Kotlin или Java
Поехали!)
1. Написание или импорт нативного кода
Вы можете добавить в проект Ваш собственный код, или найти интересующий модуль/приложение/библиотеку для использования в Вашем Android проекте.
2. Конфигурирование CMAKE
Для начала создадим папку cpp в папке src/main нашего модуля/проекта. Второй вариант – в Android Studio в папке java выполнить действие – Add C++ To Module
Остальную часть текста можно пропустить, если Вы выбрали второй вариант.
3. Конфигурирование системы сборки Gradle с указанием пути к CMAKE.
В конфиг файл build.gradle вашего модуля в директиве Android добавьте следующие строки:
android { compileSdk 31 defaultConfig { ... externalNativeBuild { cmake { cppFlags '' } } } ... externalNativeBuild { cmake { path file('src/main/cpp/CMakeLists.txt') version '3.10.2' } } }
Далее создаем файл – CMakeLists.txt
cmake_minimum_required(VERSION 3.10.2) project("salattime.online") add_library( # Sets the name of the library. salattime.online salattime.online.cpp ) find_library( log-lib log ) target_link_libraries( salattime.online ${log-lib} )
4 Создание JNI интерфейса для работы с C++ кодом из Kotlin или Java
Здесь тоже нет ничего сложного. Для этого надо создать файл с расширением cpp и именем, совпадающим с названием файла, данному в файле сборки add_library( # Sets the name of the library. salattime.online salattime.online.cpp ). В нашем случае это salattime.online.cpp.
Вот и все!) Может быть кто то еще застал разработку для Android в Eclipse=) Ничего сложного в добавлении C/C++ кода в проект нет. Главная сложность это именно в написании самого кода на С/C++ ;-: