Подтвердить что ты не робот

Компилирование кода C++ (Xcode) для iOS и Android. Это реально?

Я хочу попробовать написать и скомпилировать C++ код для iOS и Android-устройств. Я уже некоторое время использую XCode (я писал код C++ для MacOS и Windows). Поэтому я хочу использовать Xcode для своих целей.

Проблема в том, что я не знаю, как скомпилировать код C++ как для устройств Android, так и для iPad/IPhone. Я хочу использовать кроссплатформенное решение для iOS и Android, но не хочу использовать такие фреймворки, как Marmalade (C++) или другие.

Это реально или нет? :) Есть ли учебники или другие полезные материалы?

4b9b3361

Ответ 1

Вы можете определенно использовать С++ на iOS и Android. Я написал свои собственные игровые движки для обоих.

Xcode является нормальной IDE для iOS и поддерживает "Objective-C ++" (компилятор поддерживает как Objective-C, так и C++). Вам нужно будет написать тонкую оболочку в Objective-C для взаимодействия с ОС, но вы можете написать все остальное на С++, если хотите. Если вы загружаете инструменты командной строки Xcode, вы также можете создавать из сценариев.

Eclipse - обычная IDE для Android, и если вы загрузите NDK, вы можете использовать JNI. для взаимодействия между Java и С++. Как и в iOS, вам потребуется хотя бы оболочка Java для взаимодействия с ОС.

Однако вы не ограничены Eclipse и Xcode. Например, вы можете использовать emacs и/или использовать CMake, чтобы вы могли попытаться консолидировать настройки проекта немного. Emacs - очень мощная и гибкая среда разработки, но она имеет очень крутую кривую обучения и не очень проста в установке. Если вы сделаете это на Mac, я бы рекомендовал emacsformacosx и установить ECB и автозаполнение. CMake - это в основном кросс-платформенная система сборки, которая позволяет вам создавать много разных файлов проекта (Visual Studio, Xcode, Eclipse и т.д.) Из одного дерева источников. Подобно emacs, это супермощная, но довольно крутая кривая обучения. Если вы хотите сразу же вскочить, вы, скорее всего, захотите начать с Xcode и Eclipse. Если вы работаете на ПК, вам понадобится Mac VM или Hackintosh, чтобы использовать Xcode и cygwin для использования NDK для Android (пользователи Macbook Pro могут сразу же повеселиться с небольшими хлопотами).

Разработка Android для Android, безусловно, намного сложнее. Не только у вас есть гораздо больше сегментирования устройств, с которыми можно бороться, но встроенная отладка не очень проста. Вы должны запустить сервер GDB на устройстве и подключиться к нему, чтобы установить точки останова, и многие люди делают это из командной строки. Я слышал, что некоторые люди добились успеха с помощью Tegra Tools для Eclipse, если вы хотите использовать IDE на основе графического интерфейса.

Я бы определенно рекомендовал сначала разрабатывать iOS, так как у вас есть более мощные инструменты в вашем распоряжении от IDE. Вы можете отслеживать утечки памяти, код профиля, легко устанавливать точки останова;) и т.д. После разработки функции на iOS вы можете бороться с файлами .mk и другой добротой разработки на базе Android.

Ниже приведена информация о основных объектах и ​​жизненном цикле для iOS:

и для Android:

Пока вы хорошо играете с ОС и уважаете жизненный цикл приложения, вы можете совершать звонки на логику С++. Вы можете сделать это напрямую с помощью iOS, но с Android вы должны разблокировать вызовы через JNI. Если вы инкапсулируете специфику платформы, вы можете делиться логикой С++ между обеими платформами.

Я большой сторонник С++, но выбор его использования зависит от ситуации для этих платформ. С++ не является популярным выбором для этих платформ, и поэтому вы не найдете столько документации (по своему усмотрению большую часть времени). Сложность может немного возрасти, если вы не очень хорошо знакомы с С++ (знаете ли вы RAII, дизайн паттерна, STL?).

Вот несколько ситуаций, где это может иметь смысл:

  • Если вам нужно использовать библиотеку, созданную на C/С++
  • Если вы хотите создать собственную платформу агностической платформы для своих приложений или игр
  • Если вы работаете с критическими приложениями реального времени/производительности, такими как игры

Я не говорю, что вы ДОЛЖНЫ использовать С++ в этих ситуациях, так как многие люди разработали игры в Objective-C. Я просто говорю, что может быть что-то рассмотреть, если вам нужно максимально использовать аппаратное обеспечение, или вы просто хотите что-то более портативное.