Как правильно внедрить проект C++ в Android?

135
11 января 2021, 11:10

Такая история, у меня есть проект написаный на C++, который компилируется и работает.

Так же у меня есть проект android.

По сути в проекте C++ всего несколько функций(маленький проект) и все они мне нужны в моем android проекте.

Теперь вопрос : как правильно сделать такую интеграцию?

Я думаю, что нужно этот C++ проект собрать как библиотеку, добавить его в андроид как билиотеку и работать с ним.

Или может добавить этот проект как дополнительный модуль и через NDK использовать его как то...

В общем никогда этого не делал. Подскажите кто с этим сталкивался как это должно работать? Какая последовательность добавления C++ проекта в android проект?

Правка

Я понял, что есть возможность добавить ndk в проект и следуя этому туториалу

https://developer.android.com/studio/projects/add-native-code

добавить код "типо" C++, потому что код в JNI выглядит так

extern "C" JNIEXPORT jstring JNICALL
Java_com_google_ar_core_examples_java_helloar_HelloArActivity_stringFromJNINew(
    JNIEnv *env,
    jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}

но это не синтаксис C++ ... По крайней мене насколько я знаю...

Это значит, что я не могу взять класс который написан на C++ скопировать его и пользоваться, так как синтаксис в моем C++ классе и синтаксис который предлагает Android Studio он похож, но это не одно и тоже. Значит мне нужно его переписывать...

Я подумал о второй опции... Ведь как то же должна быть возможность открыть проект в VisualStudio и собрать из этого проекта что то типа .so и уже эту библиотеку добавить как то так

https://stackoverflow.com/questions/24357687/how-to-include-so-library-in-android-studio

Любые предположения приветствуются

Answer 1

Смотри, вот документация от Google https://developer.android.com/studio/projects/add-native-code

READ ALSO
Коллекция в контроллере

Коллекция в контроллере

В коллекцию через ajax приходят данные в ListКак правильно их обработать и передать в метод? Спасибо! Контроллер:

105
Как в OSGI (Apache Felix) внедрить АОП для чужих bundle?

Как в OSGI (Apache Felix) внедрить АОП для чужих bundle?

Есть необходимость добавить АОП для классов из разных бандлов в OSGI (Apache Felix)

86
Как различать объекты в RecyclerView?

Как различать объекты в RecyclerView?

Я могу повеcить слушатель на RecyclerView но тогда все предметы будут выполнять одинаковые команды, мне надо чтобы отдельный объект выполнял отдельную...

113
LinkedHashMap и внутреннее устройство

LinkedHashMap и внутреннее устройство

Почему говорят, что LinkedHashMap это хеш-таблица + LinkedList, если в исходниках в идее смотрю, внутри LinkedHashMap нет LinkedList?

136