Как создать общую библиотеку в C ++ для Android и iOS?

Я использую LibGDX для написания приложений как для Android, так и для iOS, и я хочу иметь возможность добавлять код C ++ в мои приложения для оптимизации определенных частей, а также для переноса некоторых функций и т. Д.

Я искал в Интернете и пытался следовать некоторым учебникам, но не нашел то, что мне нужно.

Как я могу написать очень простую библиотеку C ++, которую я могу загрузить в LibGDX? Какие инструменты мне нужно использовать? Visual Studio? Я занимаюсь разработкой в ​​Android Studio.

Я думаю, что мне нужен .so файл для Android и .a файл для iOS, это правильно?

8

Решение

На обеих платформах можно напрямую включить предварительно скомпилированную библиотеку, а также исходный код C ++.

На Android вы захотите изучить использование Android NDK, Это позволяет вам включать собственный код C / C ++, который может соединяться с Java. Соединение между Java и C / C ++ управляется с помощью JNI, Это довольно нудная, неуклюжая система для общения между C ++ и Java. Вы хотите посмотреть на создание Android.mk make-файл, который определяет, как включить вашу библиотеку (или исходный код) в вашу сборку.

На iOS это немного более тесно связано. У вас могут быть файлы Objective-C ++, которые могут выполнять как код C ++, так и код Objective-C. Если вы используете Swift, он немного другой (мост между Objective-C ++ и Swift).

В некоторых случаях, когда платформа (Android / iOS) предоставляет функциональные возможности, которые превосходят возможности, которые возможны или реалистичны в C ++, вы можете столкнуться с тем, что разрабатываете код, чтобы ваш C ++ мог обращаться к платформе по мере необходимости. Это означает, что у вас могут быть заголовки с отдельными файлами реализации для каждой платформы.

  • thing.h
  • thing_android.cpp
  • thing_ios.mm

Приложения для Android Android.mk файл будет включать thing_android.cpp (но нет thing_ios.mm). Этот файл может пересекать мост JNI для взаимодействия с Java по мере необходимости, когда вам что-то понадобится из Android SDK.

Приложение для iOS будет включать thing_ios.mm (но нет thing_android.cpp). .mm расширение означает Objective-C ++, так что файл может напрямую вызывать мощные библиотеки Какао по мере необходимости.

Наконец, на всех платформах вы должны быть уверены, что либо сократите использование C ++ до платформы с наименьшим общим знаменателем. Другими словами, если iOS поддерживает определенную функцию C ++, а Android нет, то вы не можете использовать эту функцию.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]