абстрактный слой платформы (PLA) для мобильного приложения с использованием Stack Overflow

Это мой первый блог или вопрос.
Я хочу разработать абстрактный слой платформы (PLA) для мобильного приложения с использованием c ++. то есть из мобильного приложения я мог общаться с устройством Bluetooth, не беспокоясь о том, какая ОС работает (т.е. IOS ANDROID и т. д.). Итак, мне нужно выяснить, какая ОС работает, будь то IOS или ANDROID, используя код на С ++, но без вызова нативного API какой-либо ОС.

  1. Итак, кто-нибудь может предложить вашу мысль о том, как мы можем определить тип ОС (т. Е. IOS, ANDROID) и версию ОС, используя код c ++.

  2. Для разработки какой IDE предпочтительнее разрабатывать код на С ++?

Заранее спасибо..!!

Спасибо,
Раджу.

0

Решение

Даже если вы разрабатываете кроссплатформенный код, когда приходит время его компиляции, вам нужно ориентироваться на платформу. Чтобы определить его, необходимо проверить определения прекомпилятора.

Большинство компиляторов определяют какую-то платформу при компиляции, если нет, вы можете сделать это самостоятельно при настройке вашего проекта.

Например, Xcode определит __APPLE__ а также TARGET_OS_IPHONE а также TARGET_OS_MAC при компиляции соответственно iOS и Mac проектов.

Для Android __ANDROID__ должен быть определен набором инструментов, однако я видел, что несколько mk-файлов добавляют явные флаги платформы, например:

LOCAL_CFLAGS := -DANDROID $(LOCAL_CFLAGS)

Затем необходимо использовать условия прекомпиляции:

#ifdef __APPLE__
#if TARGET_OS_IPHONE
// Configure for iPhone
#endif
#endif

#ifdef ANDROID
// Configure for Android
#endif

Для определения версии, на самом деле, в любом случае это не сделать без вызова Native API. К счастью, есть шаблон, который вы можете использовать, чтобы выделить конкретную реализацию и поместить общий интерфейс перед этим кодом.

Что касается IDE, это во многом зависит от выбора и доступности. Наиболее популярными являются Xcode для iOS и Eclipse для Android, но есть и другие.

0

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

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

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