Android add NDK support

Android add NDK support to existing project

Android add NDK support – добавление поддержки NDK в существующий проект

Не всегда получается так, что мы создаем проект с поддержкой C/C++ в самом начале. По мере развития проекта может возникнуть ситуация, когда необходимо подключить например библиотеку на С или C++. К сожалению мы не будем здесь обсуждать тонкости и теорию JNI(Java Native Interface) – часть работ мы уже опубликовали в нашем блоге. Но приведенные нами примеры помогут понять суть. Алгоритм добавления поддержки C/C++ в Android проект состоит из 4-х пунктов.

  1. Написание или импорт нативного кода
  2. Конфигурирование CMAKE для сборки нативного кода как библиотеки. Если в Вашей библиотеке имеется готовый файлCMakeLists.txt, этот пункт не является  обязательным
  3. Конфигурирование системы сборки Gradle с указанием пути к CMAKE.
  4. Создание JNI интерфейса для работы с C++ кодом из Kotlin или Java

Поехали!)

     1. Написание или импорт нативного кода

Вы можете добавить в проект Ваш собственный код, или найти интересующий модуль/приложение/библиотеку для использования в Вашем Android проекте.

     2. Конфигурирование CMAKE

Для начала создадим папку cpp в папке src/main нашего модуля/проекта. Второй вариант – в Android Studio в папке java выполнить действие – Add C++ To Module

Android add NDK support

Остальную часть текста можно пропустить, если Вы выбрали второй вариант.

     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++ ;-:

Leave a Reply

Please disable your adblocker or whitelist this site!